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); }
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); }
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); }
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); }
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); }
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); }
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); }
//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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }