Example #1
0
        private RespuestaAccion ChangeStateAF(int codigo_lote, GENERIC_VALUE StateSet)
        {
            var respuesta = new RespuestaAccion();

            try
            {
                BATCH_ARTICLE lote = (from b in _context.BATCHS_ARTICLES
                                      where b.id == codigo_lote
                                      select b)
                                     .First();
                if (lote.origin_id == 2)    //OBC
                {
                    ASSET_IN_PROGRESS_HEAD[] salidas = (from aph in _context.ASSETS_IN_PROGRESS_HEAD
                                                        where aph.batch_id == codigo_lote
                                                        select aph).ToArray();
                    foreach (var salida in salidas)
                    {
                        salida.aproval_state_id = StateSet.id;
                    }
                }
                lote.aproval_state_id = StateSet.id;
                _context.SaveChanges();
                respuesta.set_ok();
            }
            catch (Exception e)
            {
                respuesta.set(-1, e.StackTrace);
            }

            return(respuesta);
        }
Example #2
0
        public RespuestaAccion REGISTER_PURCHASE_HEAD(GENERIC_VALUE part, DateTime fecha_compra, GENERIC_VALUE zona, GENERIC_VALUE subzona, GENERIC_VALUE clase, GENERIC_VALUE subclase, GENERIC_VALUE categoria, GENERIC_VALUE gestion, string usuario)
        {
            var res = new RespuestaAccion();

            try
            {
                //List<TRANSACTION_HEADER> generados = new List<TRANSACTION_HEADER>();
                TRANSACTION_HEADER nueva_cab = new TRANSACTION_HEADER();
                nueva_cab.article_part_id   = part.id;
                nueva_cab.head_index        = GetNextHeadIndex(part.id);
                nueva_cab.trx_ini           = fecha_compra;
                nueva_cab.trx_end           = _final_date;
                nueva_cab.ref_source        = _ref_purchase;
                nueva_cab.zone_id           = zona.id;
                nueva_cab.subzone_id        = subzona.id;
                nueva_cab.kind_id           = clase.id;
                nueva_cab.subkind_id        = subclase.id;
                nueva_cab.category_id       = categoria.id;
                nueva_cab.user_own          = usuario;
                nueva_cab.manage_id         = gestion.id;
                nueva_cab.method_revalue_id = 1;    //por defecto será 1, luego el usuario podrá indicar el definitivo

                //generados.Add(nueva_cab);
                _context.TRANSACTIONS_HEADERS.AddObject(nueva_cab);
                _context.SaveChanges();

                res.result_objs.Add((SV_TRANSACTION_HEADER)nueva_cab);
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        public async Task <RespuestaAccion> ResetImage(string filename, string idKobo, string formalizacion = "", string name = "")
        {
            var r = new RespuestaAccion();

            try
            {
                var _fileName = Path.GetFileName(filename);

                var config = await db.Configuracion.FirstOrDefaultAsync();

                var remoteUri = config.KoboAttachment + config.KoboUsername + "/attachments/";
                var _path     = Path.Combine(_env.ContentRootPath, "Storage", "Formalizacion", idKobo);

                DownloadFile(remoteUri, _fileName, _path, "", config.KoboApiToken);

                r.Success = true;

                var log      = new Logger(db);
                var registro = new RegistroLog {
                    Usuario = User.Identity.Name, Accion = "ResetImage", Modelo = "Formalization " + formalizacion, ValAnterior = "", ValNuevo = name + ": " + filename
                };
                await log.RegistrarDirecto(registro);
            }
            catch (Exception e)
            {
                r.Message = e.Message;
            }

            return(r);
        }
        public RespuestaAccion DELETE_PURCHASE_PARAM(int head_id, SV_SYSTEM sistema, SV_PARAMETER parametro)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_PARAMETER_DETAIL curr_param = (from p in _context.TRANSACTIONS_PARAMETERS_DETAILS
                                                           where p.trx_head_id == head_id &&
                                                           p.paratemer_id == parametro.id &&
                                                           p.system_id == sistema.id
                                                           select p).FirstOrDefault();
                if (curr_param != null)
                {
                    _context.TRANSACTIONS_PARAMETERS_DETAILS.DeleteObject(curr_param);
                    _context.SaveChanges();
                    res.result_objs.Add((SV_TRANSACTION_PARAMETER_DETAIL)curr_param);
                    res.set_ok();
                }
                else
                {
                    //no existe, por lo que no hay que borrarlo
                    res.set(2, "No existe parametro para borrar");
                }
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #5
0
        public RespuestaAccion REGISTER_PURCHASE_DETAIL(GENERIC_VALUE cabecera, SV_SYSTEM sistema, bool depreciar, bool con_credito)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_DETAIL nuevo_det = new TRANSACTION_DETAIL();
                nuevo_det.trx_head_id  = cabecera.id;
                nuevo_det.system_id    = sistema.id;
                nuevo_det.validity_id  = Vigencias.VIGENTE().id;
                nuevo_det.depreciate   = depreciar;
                nuevo_det.allow_credit = con_credito;

                _context.TRANSACTIONS_DETAILS.AddObject(nuevo_det);
                _context.SaveChanges();

                res.result_objs.Add((SV_TRANSACTION_DETAIL)nuevo_det);

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #6
0
        public RespuestaAccion MODIF_PURCHASE_DETAIL(int headId, SV_SYSTEM sistema, bool depreciar, bool con_credito)
        {
            var res = new RespuestaAccion();

            try
            {
                int validity_id = 1;    //Durante las compras nunca se debe cambiar el estado de validacion

                var FindDetail = (from d in _context.TRANSACTIONS_DETAILS
                                  where d.trx_head_id == headId &&
                                  d.system_id == sistema.id
                                  select d).FirstOrDefault();
                if (FindDetail != null)
                {
                    FindDetail.validity_id  = validity_id;
                    FindDetail.allow_credit = con_credito;
                    FindDetail.depreciate   = depreciar;

                    _context.SaveChanges();
                    res.AddResultObj(FindDetail.id, FindDetail.GetType());
                    res.set_ok();
                }
                else
                {
                    res.set(-2, "No se encontro cabecera para modificar");
                }
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        private async Task <RespuestaAccion> UpdateImageGen(IFormFile file, string filename)
        {
            var r = new RespuestaAccion();

            if (file != null && file.Length > 0)
            {
                string filepath = Path.Combine(_env.ContentRootPath, "Storage", filename);
                if (System.IO.File.Exists(filepath))
                {
                    System.IO.File.Delete(filepath);
                }

                try
                {
                    using (var fileStream = new FileStream(filepath, FileMode.Create))
                    {
                        await file.CopyToAsync(fileStream);
                    }
                    r.Success = true;
                }
                catch (Exception e) { r.Message = "Error: " + e.Message; }
            }
            else
            {
                r.Message = "Error: El archivo no es válido.";
            }
            return(r);
        }
Example #8
0
        public RespuestaAccion ACTUALIZA_PARTES_HASTA(List <C.DetalleArticulo> detalle_articulos, int partToSellId, int newcantidad, DateTime newfecha)
        {
            var res = new RespuestaAccion();

            try
            {
                //checkeo cantidades
                var aBajar = detalle_articulos.Where(d => d.procesar).ToList();
                if (aBajar.Count != newcantidad)
                {
                    res.set(-5, "Cantidad del detalle no coincide con la indicada a bajada");
                    return(res);
                }
                //actualizo detalles de inventarios
                foreach (var det in aBajar)
                {
                    var art_baja = (from a in _context.ARTICLES
                                    where a.id == det.rowId
                                    select a).FirstOrDefault();
                    art_baja.part_id = partToSellId;    //actulizo la parte asociada, en caso que se haya aperturado
                    art_baja.hasta   = newfecha;
                }

                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #9
0
File: PART.cs Project: akuze18/AFN2
        public RespuestaAccion PART_UPDATE(int part_id, int quantity)
        {
            var resultado = new RespuestaAccion();
            var busca     = _context.PARTS.Where(p => p.id == part_id).FirstOrDefault();

            if (busca != null)
            {
                try
                {
                    busca.quantity = quantity;
                    _context.SaveChanges();
                    _load_parts();
                    resultado.set_ok();
                }
                catch (Exception ex)
                {
                    resultado.set(-2, ex.Message);
                }
            }
            else
            {
                resultado.set(-1, "No existe id en PART para modificar");
            }
            return(resultado);
        }
Example #10
0
        public RespuestaAccion GENERAR_CODIGO(int batch_id, GENERIC_VALUE clase)
        {
            var res = new RespuestaAccion();

            try
            {
                //Comprobamos existencia del lote a crearle codigos
                var lote = lotes.ById(batch_id);
                if (lote == null)
                {
                    res.set(-2, "NO EXISTE LOTE");
                    return(res);
                }
                //Comprobamos existencia de codigos ya creados para el lote
                var CurPartes   = Partes.ByLote(batch_id);
                var CurPartesId = CurPartes.Select(l => l.id).ToArray();
                var codigos     = inv_articulos.ByParts(CurPartesId);
                if (!(codigos == null || codigos.Count == 0))
                {
                    res.set(-3, "YA TIENE CODIGOS CREADOS");
                    return(res);
                }
                DateTime fecha_compra = lote.purchase_date;
                string   raiz         = fecha_compra.ToString("yyyyMM") + clase.code.Trim();
                //ingresamos articulos
                foreach (var part in CurPartes)
                {
                    //determinamos cantidad ingresada
                    int cantidad   = part.quantity;
                    int count_raiz = inv_articulos.GetCorrelativoCodigo(raiz);
                    for (int i = 1; i <= cantidad; i++)
                    {
                        string nuevo_code = raiz + (i + count_raiz).ToString("D7");
                        var    nuevo_art  = new ARTICLE();
                        nuevo_art.code         = nuevo_code;
                        nuevo_art.part_id      = part.id;
                        nuevo_art.codigo_old   = string.Empty;  //only keep as reference for legacy inventory
                        nuevo_art.ubicacion_id = 0;             //unknown place by default
                        nuevo_art.desde        = fecha_compra;
                        nuevo_art.hasta        = _final_date;   //has default value in DB
                        _context.ARTICLES.AddObject(nuevo_art);
                        _context.SaveChanges();

                        res.result_objs.Add(nuevo_art);
                    }
                }

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #11
0
        //public RespuestaAccion REGISTER_SALE_HEAD(int parteId, DateTime fechaVenta, SV_TRANSACTION_HEADER prevHead, string userName)
        //{
        //    var Vventa = Vigencias.VENTA();
        //    return REGISTER_DOWNS_HEAD(parteId, fechaVenta, prevHead, userName, Vventa);
        //}
        //public RespuestaAccion REGISTER_DISPOSAL_HEAD(int parteId, DateTime fechaVenta, SV_TRANSACTION_HEADER prevHead, string userName)
        //{
        //    var Vcastigo = Vigencias.CASTIGO();
        //    return REGISTER_DOWNS_HEAD(parteId, fechaVenta, prevHead, userName, Vcastigo);
        //}

        public RespuestaAccion REGISTER_DOWNS_HEAD(int parteId, DateTime fechaBaja, SV_TRANSACTION_HEADER prevHead, string userName, SV_VALIDATY tipo_baja)
        {
            var    res       = new RespuestaAccion();
            string reference = "";

            switch (tipo_baja.id)
            {
            case 2:
                reference = _ref_sales;
                break;

            case 3:
                reference = _ref_disposal;
                break;

            default:
                reference = _ref_error;
                break;
            }

            try
            {
                TRANSACTION_HEADER headDown = new TRANSACTION_HEADER();
                headDown.article_part_id   = parteId;
                headDown.head_index        = GetNextHeadIndex(parteId);
                headDown.trx_ini           = fechaBaja;
                headDown.trx_end           = prevHead.trx_end;
                headDown.ref_source        = reference;
                headDown.zone_id           = prevHead.zone_id;
                headDown.subzone_id        = prevHead.subzone_id;
                headDown.kind_id           = prevHead.kind_id;
                headDown.subkind_id        = prevHead.subkind_id;
                headDown.category_id       = prevHead.category_id;
                headDown.user_own          = userName;
                headDown.manage_id         = prevHead.manage_id;
                headDown.method_revalue_id = prevHead.method_revalue_id;

                TRANSACTION_HEADER _prevHead = (from h in _context.TRANSACTIONS_HEADERS
                                                where h.id == prevHead.id
                                                select h).FirstOrDefault();
                _prevHead.trx_end = fechaBaja;
                _context.TRANSACTIONS_HEADERS.AddObject(headDown);

                _context.SaveChanges();
                res.set_ok();
                res.result_objs.Add((SV_TRANSACTION_HEADER)headDown);
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #12
0
        public RespuestaAccion INGRESO_LOTE(string descripcion, DateTime fecha_compra, string cod_proveedor, string documento, decimal total_compra, int vida_util, bool derecho_credito, DateTime fecha_contab, int origen_id, GENERIC_VALUE CtiPo)
        {
            var respuesta = new RespuestaAccion();

            try
            {
                //check document
                var find_doc     = documentos.ByNumProv(documento, cod_proveedor);
                var lote_rel_doc = new DOCS_BATCH();
                if (find_doc == null)
                {
                    //no existe documento asociado, lo creamos
                    var nuevo_documento = new DOCUMENT();
                    nuevo_documento.docnumber      = documento;
                    nuevo_documento.comment        = string.Empty;
                    nuevo_documento.proveedor_id   = cod_proveedor;
                    nuevo_documento.proveedor_name = Proveedor.getNameByCode(cod_proveedor);
                    lote_rel_doc.DOCUMENT          = nuevo_documento;
                }
                else
                {
                    //ya existe, asi que usamos ese mismo
                    lote_rel_doc.document_id = find_doc.id;
                }

                BATCH_ARTICLE nuevo_lote = new BATCH_ARTICLE();
                nuevo_lote.aproval_state_id  = EstadoAprobacion.OPEN.id;
                nuevo_lote.descrip           = descripcion;
                nuevo_lote.purchase_date     = fecha_compra;
                nuevo_lote.initial_price     = total_compra;
                nuevo_lote.initial_life_time = vida_util;
                nuevo_lote.account_date      = fecha_contab;
                nuevo_lote.origin_id         = origen_id;
                nuevo_lote.type_asset_id     = CtiPo.id;

                lote_rel_doc.BATCHS_ARTICLES = nuevo_lote;

                _context.DOCS_BATCH.AddObject(lote_rel_doc);
                _context.BATCHS_ARTICLES.AddObject(nuevo_lote);

                _context.SaveChanges();

                respuesta.set_ok();
                respuesta.result_objs.Add((SV_BATCH_ARTICLE)nuevo_lote);
            }
            catch (Exception e)
            {
                respuesta.set(-1, e.StackTrace);
            }
            return(respuesta);
        }
Example #13
0
File: PART.cs Project: akuze18/AFN2
        public RespuestaAccion REGISTER_PURCHASE(int batch_id, DateTime fecha_compra, decimal valor_total, int cantidad_total)
        {
            var res = new RespuestaAccion();

            try
            {
                decimal valor_unitario = (valor_total / cantidad_total);
                //siempre se generara solo 1 registro por compra
                //int residuo = (int)(valor_total - (valor_unitario * cantidad_total));
                //if (residuo == 0)
                //{
                //solo requiero 1 parte
                PART part1 = new PART();
                part1.article_id = batch_id;
                part1.part_index = 0;
                part1.quantity   = cantidad_total;
                part1.first_date = fecha_compra;

                _context.PARTS.AddObject(part1);
                _context.SaveChanges();

                res.result_objs.Add((SV_PART)part1);
                //}
                //else
                //{
                //PART part1 = new PART();
                //part1.article_id = batch_id;
                //part1.part_index = 0;
                //part1.quantity = cantidad_total - residuo;
                //part1.first_date = fecha_compra;
                //_context.PARTS.AddObject(part1);

                //PART part2 = new PART();
                //part2.article_id = batch_id;
                //part2.part_index = 1;
                //part2.quantity = residuo;
                //part2.first_date = fecha_compra;
                //_context.PARTS.AddObject(part2);
                //_context.SaveChanges();
                //res.result_objs.Add((SV_PART)part1);
                //res.result_objs.Add((SV_PART)part2);
                //}
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #14
0
        public RespuestaAccion MODIF_PURCHASE_HEAD(SV_PART parte, GENERIC_VALUE zona, GENERIC_VALUE subzona, GENERIC_VALUE subclase, GENERIC_VALUE categoria, GENERIC_VALUE gestion, string usuario)
        {
            var res = new RespuestaAccion();

            //TODO: completar proceso de modificacion de cabecera para compras
            try
            {
                int contar = 0;
                //foreach (SV_PART SPart in parte.Where(p => p.first_date == firstFecha))
                //{
                TRANSACTION_HEADER ToModif = (from h in _context.TRANSACTIONS_HEADERS
                                              where h.article_part_id == parte.id &&
                                              h.trx_ini == parte.first_date
                                              select h).FirstOrDefault();
                if (ToModif == null)
                {
                    res.set(-2, "No existe una cabecera valida para la parte solicitada");
                    return(res);
                }
                //ToModif.article_part_id   //No se puede cambiar
                //ToModif.trx_ini           //Por definición no se puede cambiar
                //ToModif.trx_end           //Por definición no se puede cambiar
                //ToModif.ref_source        //Por definición no se puede cambiar
                ToModif.zone_id    = zona.id;
                ToModif.subzone_id = subzona.id;
                //ToModif.kind_id           //Por definición no se puede cambiar
                ToModif.subkind_id  = subclase.id;
                ToModif.category_id = categoria.id;
                ToModif.user_own    = usuario;
                ToModif.manage_id   = gestion.id;
                //ToModif.method_revalue_id //No se cambia durante este proceso
                contar++;
                res.result_objs.Add((GENERIC_VALUE)(SV_TRANSACTION_HEADER)ToModif);
                //}
                if (contar > 0)
                {
                    _context.SaveChanges();
                    res.set_ok();
                }
                else
                {
                    res.set(-3, "No existen una parte valida asociada a la compra");
                }
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #15
0
        public RespuestaAccion INGRESO_ATRIB_LOTE(int lote_art, int atributo_id, string detalle, bool mostrar)
        {
            var res = new RespuestaAccion();

            try
            {
                DateTime FechaIni, FechaFin;
                int      existe;
                FechaIni = this.Partes.ByLotePart(lote_art, 0).first_date;
                FechaFin = DateTime.MaxValue;
                existe   = this.inv_articulos_details.ForArticle(lote_art, null, atributo_id).id;
                if (existe == 0)
                {
                    //no hay registro, por lo tanto podemos ingresar uno
                    var DetailAttrNew = new ARTICLES_VALUES();
                    DetailAttrNew.batch_id   = lote_art;
                    DetailAttrNew.article_id = null;
                    DetailAttrNew.attrib_id  = atributo_id;
                    DetailAttrNew.detail     = detalle;
                    DetailAttrNew.date_init  = FechaIni;
                    DetailAttrNew.date_end   = FechaFin;
                    DetailAttrNew.imprimir   = mostrar;
                    _context.ARTICLES_VALUES.AddObject(DetailAttrNew);
                    res.set(1, "INSERT");
                }
                else
                {
                    //ya hay un registro, por lo tanto actualizamos el registro
                    var DetailAttrCurr = _context.ARTICLES_VALUES.Where(av => av.id == existe).First();
                    //DetailAttrCurr.batch_id = lote_art;
                    //DetailAttrCurr.attrib_id = atributo_id;
                    DetailAttrCurr.detail    = detalle;
                    DetailAttrCurr.date_init = FechaIni;
                    DetailAttrCurr.date_end  = FechaFin;
                    DetailAttrCurr.imprimir  = mostrar;
                    res.set(0, "UPDATE");
                }
                _context.SaveChanges();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        public async Task <IActionResult> Cargar(string idKobo)
        {
            var r = new RespuestaAccion();

            var formalizacion = await db.Formalization.Where(n => n.IdKobo == idKobo).FirstOrDefaultAsync();

            if (formalizacion == null)
            {
                var kobo = new KoboController(db, userManager, _env);
                r = await kobo.LoadFormalizacion(idKobo, User.Identity.Name);

                return(Json(r));
            }

            r.Url     = "Formalizacion/Edit/" + formalizacion.Id;
            r.Success = true;
            return(Json(r));
        }
        public async Task <RespuestaAccion> CambiarEstado(int id, int estado)
        {
            var r             = new RespuestaAccion();
            var formalizacion = await db.Formalization.FindAsync(id);

            if (formalizacion == null)
            {
                r.Message = "Formalización no registrada."; return(r);
            }

            try
            {
                var anterior = await db.Formalization.AsNoTracking().Where(n => n.Id == formalizacion.Id).FirstOrDefaultAsync();

                formalizacion.Estado = estado;
                var user = await userManager.FindByNameAsync(User.Identity.Name);

                formalizacion.LastEditDate   = DateTime.Now;
                formalizacion.LastEditByUser = user;

                db.Entry(formalizacion).State = EntityState.Modified;
                await db.SaveChangesAsync();

                var log      = new Logger(db);
                var registro = new RegistroLog {
                    Usuario = User.Identity.Name, Accion = "ChangeStatus", Modelo = "Formalization", ValAnterior = anterior, ValNuevo = formalizacion
                };
                await log.Registrar(registro, typeof(Formalization), formalizacion.Id);

                //var nombreEstado = GetEstado(estado).ToUpper();
                //r.Message = "El estado de la formalización fue cambiado ha " + nombreEstado + " correctamente.";
                r.Success = true;
            }
            catch (Exception e)
            {
                r.Message = e.Message;
            }


            return(r);
        }
Example #18
0
        public RespuestaAccion BORRAR_ATRIBUTOxLOTE(int lote_art, int atributo_id)
        {
            var res = new RespuestaAccion();

            try
            {
                var DetAttributeToDelete = (from c in _context.ARTICLES_VALUES
                                            where c.batch_id == lote_art &&
                                            c.attrib_id == atributo_id &&
                                            c.article_id == null
                                            select c).FirstOrDefault();
                _context.ARTICLES_VALUES.DeleteObject(DetAttributeToDelete);
                _context.SaveChanges();
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #19
0
        public RespuestaAccion MODIF_PURCHASE_HEAD_MethodVal(int headId, int method_val)
        {
            var res = new RespuestaAccion();

            try
            {
                var FindHead = (from h in _context.TRANSACTIONS_HEADERS
                                where h.id == headId
                                select h).FirstOrDefault();
                if (FindHead != null)
                {
                    FindHead.method_revalue_id = method_val;
                    _context.SaveChanges();
                }
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #20
0
        public RespuestaAccion REGISTER_CHANGE_HEAD(int parteId, DateTime fechaCambio, GENERIC_VALUE newZona, GENERIC_VALUE newSubzona, SV_TRANSACTION_HEADER prevHead, string userName)
        {
            var res = new RespuestaAccion();

            //TODO: crear ingreso de transaccion de venta
            try
            {
                TRANSACTION_HEADER headChange = new TRANSACTION_HEADER();
                headChange.article_part_id   = parteId;
                headChange.head_index        = GetNextHeadIndex(parteId);
                headChange.trx_ini           = fechaCambio;
                headChange.trx_end           = prevHead.trx_end;
                headChange.ref_source        = _ref_change;
                headChange.zone_id           = newZona.id;
                headChange.subzone_id        = newSubzona.id;
                headChange.kind_id           = prevHead.kind_id;
                headChange.subkind_id        = prevHead.subkind_id;
                headChange.category_id       = prevHead.category_id;
                headChange.user_own          = userName;
                headChange.manage_id         = prevHead.manage_id;
                headChange.method_revalue_id = prevHead.method_revalue_id;

                TRANSACTION_HEADER _prevHead = (from h in _context.TRANSACTIONS_HEADERS
                                                where h.id == prevHead.id
                                                select h).FirstOrDefault();
                _prevHead.trx_end = fechaCambio;
                _context.TRANSACTIONS_HEADERS.AddObject(headChange);

                _context.SaveChanges();
                res.set_ok();
                res.result_objs.Add((SV_TRANSACTION_HEADER)headChange);
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        public RespuestaAccion REGISTER_PARAM_DETAIL(int trxHeadId, int systemId, int paramId, decimal currValue)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_PARAMETER_DETAIL sellParam = new TRANSACTION_PARAMETER_DETAIL();
                sellParam.trx_head_id     = trxHeadId;
                sellParam.system_id       = systemId;
                sellParam.paratemer_id    = paramId;
                sellParam.parameter_value = currValue;

                _context.TRANSACTIONS_PARAMETERS_DETAILS.AddObject(sellParam);
                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        public RespuestaAccion REGISTER_PURCHASE_PARAM(int head_id, SV_SYSTEM sistema, SV_PARAMETER parametro, decimal valor)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_PARAMETER_DETAIL nuevo_param = new TRANSACTION_PARAMETER_DETAIL();
                nuevo_param.trx_head_id     = head_id;
                nuevo_param.system_id       = sistema.id;
                nuevo_param.paratemer_id    = parametro.id;
                nuevo_param.parameter_value = valor;

                _context.TRANSACTIONS_PARAMETERS_DETAILS.AddObject(nuevo_param);
                _context.SaveChanges();
                res.result_objs.Add((SV_TRANSACTION_PARAMETER_DETAIL)nuevo_param);
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #23
0
File: PART.cs Project: akuze18/AFN2
        public RespuestaAccion CREATE_PART_NEW(int batch_id, int part_index, int quantity, DateTime movement_date)
        {
            var res = new RespuestaAccion();

            try
            {
                var nuevo = new PART();
                nuevo.article_id = batch_id;
                nuevo.part_index = part_index;
                nuevo.quantity   = quantity;
                nuevo.first_date = movement_date;
                _context.PARTS.AddObject(nuevo);
                _context.SaveChanges();
                _load_parts();
                res.result_objs.Add((SV_PART)nuevo);
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        private RespuestaAccion execUpdateData(String resp)
        {
            var r = new RespuestaAccion();

            var fecha  = DateTime.Now.ToString("r");
            var accion = "[" + fecha + "] " + resp;


            var _path   = Path.Combine(_env.ContentRootPath, "Storage");
            var archivo = _path + "/Logs.txt";

            try
            {
                if (!System.IO.File.Exists(archivo))
                {
                    using (StreamWriter sw = System.IO.File.CreateText(archivo))
                    {
                        sw.WriteLine(accion);
                    }
                }
                else
                {
                    using (StreamWriter sw = System.IO.File.AppendText(archivo))
                    {
                        sw.WriteLine(accion);
                    }
                }
                r.Message = accion;
                r.Success = true;
            }
            catch (Exception e)
            {
                r.Message = e.Message;
            }

            return(r);
        }
Example #25
0
        public RespuestaAccion REGISTER_DOWNS_DETAIL(int trxHeadId, int systemId, SV_VALIDATY downValid)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_DETAIL DownDetail = new TRANSACTION_DETAIL();
                DownDetail.trx_head_id  = trxHeadId;
                DownDetail.system_id    = systemId;
                DownDetail.validity_id  = downValid.id;
                DownDetail.depreciate   = false;
                DownDetail.allow_credit = false;

                _context.TRANSACTIONS_DETAILS.AddObject(DownDetail);
                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #26
0
        public RespuestaAccion REGISTER_CHANGE_DETAIL(int trxHeadId, SV_TRANSACTION_DETAIL prevDetail)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_DETAIL ChangeDetail = new TRANSACTION_DETAIL();
                ChangeDetail.trx_head_id  = trxHeadId;
                ChangeDetail.system_id    = prevDetail.system_id;
                ChangeDetail.validity_id  = prevDetail.validity_id;
                ChangeDetail.depreciate   = prevDetail.depreciate;
                ChangeDetail.allow_credit = prevDetail.allow_credit;

                _context.TRANSACTIONS_DETAILS.AddObject(ChangeDetail);
                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        public RespuestaAccion MODIF_PURCHASE_PARAM(int head_id, SV_SYSTEM sistema, SV_PARAMETER parametro, decimal valor, bool withResiduo)
        {
            var res = new RespuestaAccion();

            try
            {
                TRANSACTION_PARAMETER_DETAIL curr_param = (from p in _context.TRANSACTIONS_PARAMETERS_DETAILS
                                                           where p.trx_head_id == head_id &&
                                                           p.paratemer_id == parametro.id &&
                                                           p.system_id == sistema.id
                                                           select p).FirstOrDefault();
                if (curr_param == null)
                {
                    curr_param                 = new TRANSACTION_PARAMETER_DETAIL();
                    curr_param.trx_head_id     = head_id;
                    curr_param.system_id       = sistema.id;
                    curr_param.paratemer_id    = parametro.id;
                    curr_param.parameter_value = valor;
                    _context.TRANSACTIONS_PARAMETERS_DETAILS.AddObject(curr_param);
                }
                else
                {
                    curr_param.parameter_value = valor;
                }
                _context.SaveChanges();

                res.result_objs.Add((SV_TRANSACTION_PARAMETER_DETAIL)curr_param);

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
        public async Task <RespuestaAccion> LoadFormalizacion(string idKobo, string identity = null)
        {
            var r = new RespuestaAccion();

            var previo = await db.Formalization.Where(n => n.IdKobo == idKobo).FirstOrDefaultAsync();

            if (previo != null)
            {
                r.Url     = "Formalizacion/Edit/" + previo.Id;
                r.Success = true;
                return(r);
            }

            //Carga los datos de conexión desde la configuración
            var config = await db.Configuracion.FirstOrDefaultAsync();

            var configFormalizacion = await db.FormalizationConfig.Where(n => n.Group == 1 && n.Field != "" && n.Value != "").ToListAsync();

            var fields = JsonConvert.SerializeObject(configFormalizacion.Select(n => n.Value).ToArray());
            var query  = JsonConvert.SerializeObject(new { _id = idKobo });

            var url = config.KoboKpiUrl + "/assets/" + config.KoboAssetUid + "/submissions/?format=json" +
                      "&query=" + HttpUtility.UrlEncode(query) +
                      "&fields=" + HttpUtility.UrlEncode(fields);

            dynamic result = null;

            try
            {
                //Consulta la información
                var client = new HttpClient();
                client.DefaultRequestHeaders.Add("Authorization", "Token " + config.KoboApiToken);
                HttpResponseMessage response = await client.GetAsync(url);

                response.EnsureSuccessStatusCode();

                string responseBody = await response.Content.ReadAsStringAsync();

                dynamic data = JsonConvert.DeserializeObject(responseBody);
                //Valida que se cargaran resultados
                if (data == null)
                {
                    r.Message = "ERROR: No fue posible recuperar la información"; return(r);
                }
                result = data[0];
            }
            catch (HttpRequestException e) { r.Message = e.Message; return(r); }

            if (result != null)
            {
                var username = identity != null ? identity : User.Identity.Name;
                var user     = await userManager.FindByNameAsync(username);

                var responsable = user.IDDependencia;
                //Mapea los resultados
                var formalizacion = new Formalization()
                {
                    Estado           = Formalization.ESTADO_BORRADOR,
                    CreateDate       = DateTime.Now,
                    LastEditDate     = DateTime.Now,
                    IdResponsable    = responsable,
                    IdCreateByUser   = user.Id,
                    IdLastEditByUser = user.Id
                };

                //folder para los adjunto

                var _path     = Path.Combine(_env.ContentRootPath, "Storage", "Formalizacion", idKobo);
                var _relative = Path.Combine("Formalizacion", idKobo);
                var remoteUri = config.KoboAttachment + config.KoboUsername + "/attachments/";

                if (!Directory.Exists(_path))
                {
                    Directory.CreateDirectory(_path);
                }
                var imageErrors = false;

                //variables de formalizacion
                var artes = await db.FormalizationVariable.Where(n => n.Group == "Arte")
                            .ToDictionaryAsync(n => n.Key, n => n.Value);

                var zonas = await db.FormalizationVariable.Where(n => n.Group == "Zona")
                            .ToDictionaryAsync(n => n.Key, n => n.Value);

                var configZonas = await db.FormalizationConfig.Where(n => n.Group == 2 && n.Field != "" && n.Value != "").ToListAsync();

                var czTipo   = configZonas.Where(n => n.Field == "zonaTipo").Select(n => n.Value).FirstOrDefault();
                var czNombre = configZonas.Where(n => n.Field == "zonaNombre").Select(n => n.Value).FirstOrDefault();

                var map = configFormalizacion.ToDictionary(n => n.Field, n => n.Value);


                var oType = typeof(Formalization);
                foreach (var oProperty in oType.GetProperties())
                {
                    var name  = oProperty.Name;
                    var value = "";
                    if (map.ContainsKey(name))
                    {
                        var fieldName = map[name];
                        if (name == "AreaPesca")
                        {
                            var arrZona = result[fieldName];
                            if (arrZona != null)
                            {
                                var listResult = new List <string>();
                                foreach (var a in arrZona)
                                {
                                    var zonaAux = "";

                                    var tipoZona = (String)a[czTipo];
                                    zonaAux = tipoZona != null && tipoZona != "" ? GetValueForVariables(tipoZona, zonas) + " " : "";

                                    var nombreZona = (String)a[czNombre];
                                    zonaAux += nombreZona != null && nombreZona != "" ? "'" + nombreZona + "'" : "";

                                    if (zonaAux != "")
                                    {
                                        listResult.Add(zonaAux);
                                    }
                                }
                                value = listResult.Count > 0 ? String.Join(", ", listResult) : "";
                            }
                        }
                        else if (name == "ArtesPesca")
                        {
                            var auxValue = (String)result[fieldName];
                            if (auxValue != null & auxValue != "")
                            {
                                var idsList    = auxValue.Split(' ').ToList();
                                var listResult = new List <string>();
                                foreach (var idArte in idsList)
                                {
                                    listResult.Add(GetValueForVariables(idArte, artes));
                                }
                                value = listResult.Count > 0 ? String.Join(", ", listResult) : "";
                            }
                        }
                        else
                        {
                            value = (String)result[fieldName];

                            //Si es una campo de imagen descarga el adjunto
                            if (name.StartsWith("Img") && value != null && value != "")
                            {
                                var filePath = DownloadFile(remoteUri, value, _path, _relative, config.KoboApiToken);
                                if (filePath == "")
                                {
                                    imageErrors = true;
                                    break;
                                }
                                value = filePath;
                            }
                        }

                        oProperty.SetValue(formalizacion, value == null ? "" : value, null);
                    }
                }

                //Valida los adjuntos
                if (imageErrors)
                {
                    r.Message = "ERROR: El servidor esta bloqueado, intente más tarde."; return(r);
                }

                //Consulta la dependencia del encuestador
                if (formalizacion.Encuestador != null && formalizacion.Encuestador != "")
                {
                    int numId       = Int32.Parse(formalizacion.Encuestador);
                    var encuestador = await db.Pollster.Where(n => n.DNI == numId).FirstOrDefaultAsync();

                    formalizacion.IdResponsable = encuestador != null ? encuestador.IdResponsable : responsable;
                }

                var log = new Logger(db);
                try
                {
                    //Departamento
                    var municipio = await db.Location.Where(n => n.Code2 == formalizacion.Municipio).FirstOrDefaultAsync();

                    if (municipio != null)
                    {
                        formalizacion.Municipio    = municipio.Name;
                        formalizacion.Departamento = municipio.LocationParent != null ? municipio.LocationParent.Name : formalizacion.Departamento;
                    }

                    //Validación formalización previo a guardar
                    previo = await db.Formalization.Where(n => n.IdKobo == idKobo).FirstOrDefaultAsync();

                    if (previo != null)
                    {
                        r.Url     = "Formalizacion/Edit/" + previo.Id;
                        r.Success = true;
                        return(r);
                    }

                    //Guarda la formalización
                    db.Formalization.Add(formalizacion);
                    await db.SaveChangesAsync();

                    r.Url     = "Formalizacion/Edit/" + formalizacion.Id;
                    r.Success = true;

                    var registro = new RegistroLog {
                        Usuario = identity, Accion = "Create", Modelo = "Formalization", ValNuevo = formalizacion
                    };
                    await log.Registrar(registro, typeof(Formalization), formalizacion.Id);
                }
                catch (Exception e) { r.Message = e.InnerException.Message; return(r); }
            }
            else
            {
                r.Message = "ERROR: No se encuentran resultados."; return(r);
            }

            return(r);
        }
Example #29
0
        public RespuestaAccion EGRESO_GASTO(int?id, int codigoEntrada, DateTime fechaSalida, decimal montoOriginal, int aprovalId)
        {
            //TODO: Proceso de egreso hacia gastos
            var res = new RespuestaAccion();

            try
            {
                //VALIDO QUE LA ENTRADA CORRESPONDA
                var findEntrada = ObrasConstruccion.IngresoById(codigoEntrada);
                if (findEntrada == null)
                {
                    res.set(-2, "CODIGO ENTRADA NO CORRESPONDE");
                    return(res);
                }
                string glosaEgreso = "MOVIMIENTO AL GASTO";

                if (id == null)
                {
                    var OBCHeadNew = new ASSET_IN_PROGRESS_HEAD();
                    OBCHeadNew.tipo             = _OutOBC;
                    OBCHeadNew.trx_date         = fechaSalida;
                    OBCHeadNew.zone_id          = findEntrada.zone.id;
                    OBCHeadNew.descrip          = glosaEgreso;
                    OBCHeadNew.entrada_id       = findEntrada.id;
                    OBCHeadNew.batch_id         = null;
                    OBCHeadNew.post_date        = fechaSalida;
                    OBCHeadNew.aproval_state_id = aprovalId;
                    _context.ASSETS_IN_PROGRESS_HEAD.AddObject(OBCHeadNew);

                    //reviso detalle egreso
                    decimal DispCLP, montoYen, TotalCLP, TotalYen;
                    DispCLP = ObrasConstruccion.SaldoDisponible(findEntrada.id, Monedas.CLP);

                    if (DispCLP > montoOriginal)
                    {
                        TotalCLP = findEntrada.TotalByCurrency(Monedas.CLP);
                        TotalYen = findEntrada.TotalByCurrency(Monedas.YEN);
                        //montoOriginal = montoOriginal;
                        montoYen = Math.Round(TotalYen * montoOriginal / TotalCLP, 0);
                    }
                    else
                    {
                        montoOriginal = DispCLP;
                        montoYen      = ObrasConstruccion.SaldoDisponible(findEntrada.id, Monedas.YEN);
                    }

                    var OBCDetailCLPNew = new ASSET_IN_PROGRESS_DETAIL();
                    OBCDetailCLPNew.ASSET_IN_PROGRESS_HEAD = OBCHeadNew;
                    OBCDetailCLPNew.currency_id            = Monedas.CLP.id;
                    OBCDetailCLPNew.amount = montoOriginal;
                    _context.ASSETS_IN_PROGRESS_DETAIL.AddObject(OBCDetailCLPNew);

                    var OBCDetailYENNew = new ASSET_IN_PROGRESS_DETAIL();
                    OBCDetailYENNew.ASSET_IN_PROGRESS_HEAD = OBCHeadNew;
                    OBCDetailYENNew.currency_id            = Monedas.YEN.id;
                    OBCDetailYENNew.amount = montoYen;
                    _context.ASSETS_IN_PROGRESS_DETAIL.AddObject(OBCDetailYENNew);
                }
                else
                {
                    var findSalida = ObrasConstruccion.EgresoById((int)id);
                    if (findSalida == null)
                    {
                        res.set(-3, "CODIGO SALIDA NO CORRESPONDE");
                        return(res);
                    }

                    var OBCHeadEdit = (from a in _context.ASSETS_IN_PROGRESS_HEAD
                                       where a.id == findSalida.id
                                       select a).First();
                    OBCHeadEdit.tipo             = _OutOBC;
                    OBCHeadEdit.trx_date         = fechaSalida;
                    OBCHeadEdit.zone_id          = findEntrada.zone.id;
                    OBCHeadEdit.descrip          = glosaEgreso;
                    OBCHeadEdit.entrada_id       = findEntrada.id;
                    OBCHeadEdit.batch_id         = null;
                    OBCHeadEdit.post_date        = fechaSalida;
                    OBCHeadEdit.aproval_state_id = aprovalId;

                    //reviso detalle egreso
                    decimal DispCLP, montoYen, TotalCLP, TotalYen;
                    DispCLP = ObrasConstruccion.SaldoDisponible(findEntrada.id, Monedas.CLP);

                    if (DispCLP > montoOriginal)
                    {
                        TotalCLP = findEntrada.TotalByCurrency(Monedas.CLP);
                        TotalYen = findEntrada.TotalByCurrency(Monedas.YEN);
                        //montoOriginal = montoOriginal;
                        montoYen = Math.Round(TotalYen * montoOriginal / TotalCLP, 0);
                    }
                    else
                    {
                        montoOriginal = DispCLP;
                        montoYen      = ObrasConstruccion.SaldoDisponible(findEntrada.id, Monedas.YEN);
                    }

                    var OBCDetailCLPEdit = (from d in _context.ASSETS_IN_PROGRESS_DETAIL
                                            where d.head_id == OBCHeadEdit.id &&
                                            d.currency_id == Monedas.CLP.id
                                            select d).First();
                    OBCDetailCLPEdit.amount = montoOriginal;

                    var OBCDetailYENEdit = (from d in _context.ASSETS_IN_PROGRESS_DETAIL
                                            where d.head_id == OBCHeadEdit.id &&
                                            d.currency_id == Monedas.YEN.id
                                            select d).First();
                    OBCDetailYENEdit.amount = montoYen;
                }


                _context.SaveChanges();
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #30
0
        public RespuestaAccion EGRESO_OBC(int codEntrada, int codSalida, decimal montoOriginal, int zonaId)
        {
            var res = new RespuestaAccion();

            try
            {
                //VALIDO QUE LA ENTRADA CORRESPONDA
                var findEntrada = ObrasConstruccion.IngresoById(codEntrada);
                if (findEntrada == null)
                {
                    res.set(-2, "CODIGO ENTRADA NO CORRESPONDE");
                    return(res);
                }
                //VALIDO QUE LA SALIDA CORRESPONDA
                var findBatch = lotes.ById(codSalida);
                if (findBatch == null)
                {
                    res.set(-2, "CODIGO SALIDA NO CORRESPONDE");
                    return(res);
                }
                string glosaEgreso = "MOVIMIENTO AL ACTIVO FIJO";


                var OBCHeadNew = new ASSET_IN_PROGRESS_HEAD();
                OBCHeadNew.tipo             = _OutOBC;
                OBCHeadNew.trx_date         = findBatch.purchase_date;
                OBCHeadNew.zone_id          = zonaId;
                OBCHeadNew.descrip          = glosaEgreso;
                OBCHeadNew.entrada_id       = findEntrada.id;
                OBCHeadNew.batch_id         = findBatch.id;
                OBCHeadNew.post_date        = findBatch.account_date;
                OBCHeadNew.aproval_state_id = EstadoAprobacion.CLOSE.id;
                _context.ASSETS_IN_PROGRESS_HEAD.AddObject(OBCHeadNew);

                //reviso detalle egreso
                decimal DispCLP, montoYen, TotalCLP, TotalYen;
                DispCLP = ObrasConstruccion.SaldoDisponible(findEntrada.id, Monedas.CLP);

                if (DispCLP > montoOriginal)
                {
                    TotalCLP = findEntrada.TotalByCurrency(Monedas.CLP);
                    TotalYen = findEntrada.TotalByCurrency(Monedas.YEN);
                    //montoOriginal = montoOriginal;
                    montoYen = Math.Round(TotalYen * montoOriginal / TotalCLP, 0);
                }
                else
                {
                    montoOriginal = DispCLP;
                    montoYen      = ObrasConstruccion.SaldoDisponible(findEntrada.id, Monedas.YEN);
                }

                var OBCDetailCLPNew = new ASSET_IN_PROGRESS_DETAIL();
                OBCDetailCLPNew.ASSET_IN_PROGRESS_HEAD = OBCHeadNew;
                OBCDetailCLPNew.currency_id            = Monedas.CLP.id;
                OBCDetailCLPNew.amount = montoOriginal;
                _context.ASSETS_IN_PROGRESS_DETAIL.AddObject(OBCDetailCLPNew);

                var OBCDetailYENNew = new ASSET_IN_PROGRESS_DETAIL();
                OBCDetailYENNew.ASSET_IN_PROGRESS_HEAD = OBCHeadNew;
                OBCDetailYENNew.currency_id            = Monedas.YEN.id;
                OBCDetailYENNew.amount = montoYen;
                _context.ASSETS_IN_PROGRESS_DETAIL.AddObject(OBCDetailYENNew);

                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }