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); }
private RespuestaAccion baja_act(int codigo_articulo, int parte_articulo, DateTime newfecha, int newcantidad, string usuario, List <C.DetalleArticulo> detalle_articulos, SV_VALIDATY tipo_baja) { var res = new RespuestaAccion(); try { ACode.Vperiodo prev_periodo = new ACode.Vperiodo(newfecha.Year, newfecha.Month) - 1; //valido que parte existe SV_PART partToDown = Partes.ByLotePart(codigo_articulo, parte_articulo); if (partToDown == null) { res.set(-2, "Activo Fijo no puede ser vendido, ya que no existe la parte solicitada"); return(res); } //determino si necesito crear una nueva parte para bajar if (partToDown.quantity > newcantidad) { res = CREATE_NEW_PART_FROM(codigo_articulo, partToDown.id, newcantidad, newfecha); if (res.codigo < 0) { return(res); } int newPartId = res.result_objs[0].id; partToDown = Partes.ById(newPartId); } //determino cabecera vigente SV_TRANSACTION_HEADER headPrev = cabeceras.byPartFechaValid(partToDown.id, newfecha); if (headPrev == null) { res.set(-3, "Activo Fijo no puede ser dado de baja (" + tipo_baja.name + "), no tiene una transaccion vigente al periodo"); return(res); } //crear nueva cabecera de transaccion res = REGISTER_DOWNS_HEAD(partToDown.id, newfecha, headPrev, usuario, tipo_baja); //TODO: reporto en log hitos if (res.codigo < 0) { return(res); } var headDown = res.result_objs[0]; var AllSystems = sistemas.All(); //agregar valores de detalle y parametros para la cabecera foreach (SV_SYSTEM currSys in AllSystems) { //compruebo si la transaccion anterior tenía detalle para este ambiente SV_TRANSACTION_DETAIL findDet = detalles.GetByPartSystem(headPrev.id, currSys); if (findDet != null) { //ingreso detalle de transaccion res = REGISTER_DOWNS_DETAIL(headDown.id, currSys.id, tipo_baja); if (res.codigo < 0) { return(res); } if (currSys.ENVIORMENT.depreciation_rate == "daily") { //si deprecio en días (IFRS) debo depreciar solo los dias desde el ultimo cierre var currProc = get_detailed(currSys, prev_periodo.last, codigo_articulo, true, true).FirstOrDefault(); if (currProc != null) { //determino los valores de depreciados segun corresponda var depreciado = new DETAIL_DEPRECIATE(currProc, 0, newfecha); //ingreso parametros decimal monto_param; if (depreciado.val_AF_cm != 0) { SV_PARAMETER currParam = parametros.PrecioBase; monto_param = depreciado.val_AF_cm / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.DA_AF != 0) { SV_PARAMETER currParam = parametros.DepreciacionAcum; monto_param = depreciado.DA_AF / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.credi_adi_cm != 0) { SV_PARAMETER currParam = parametros.Credito; monto_param = depreciado.credi_adi_cm / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.deter != 0) { SV_PARAMETER currParam = parametros.Deterioro; monto_param = depreciado.deter / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.val_res != 0) { SV_PARAMETER currParam = parametros.ValorResidual; monto_param = depreciado.val_res / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.vu_resi != 0) { SV_PARAMETER currParam = parametros.VidaUtil; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, depreciado.vu_resi); } if (depreciado.preparacion != 0) { SV_PARAMETER currParam = parametros.Preparacion; monto_param = depreciado.preparacion / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.transporte != 0) { SV_PARAMETER currParam = parametros.Transporte; monto_param = depreciado.transporte / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.montaje != 0) { SV_PARAMETER currParam = parametros.Montaje; monto_param = depreciado.montaje / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.desmantelamiento != 0) { SV_PARAMETER currParam = parametros.Desmantelamiento; monto_param = depreciado.desmantelamiento / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.honorario != 0) { SV_PARAMETER currParam = parametros.Honorario; monto_param = depreciado.honorario / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.revalorizacion != 0) { SV_PARAMETER currParam = parametros.Revalorizacion; monto_param = depreciado.revalorizacion / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } } else { res.set(-4, "No se encontro información vigente para dar de baja"); return(res); } } else //if (currSys.ENVIORMENT.depreciation_rate == "monthly") { //copio los detalles de valores anteriores a la nueva cabecera (no aplica ningun calculo adicional) List <SV_TRANSACTION_PARAMETER_DETAIL> findDetailsParams = DetallesParametros.ByHeadSys(headPrev.id, currSys); foreach (var DetParam in findDetailsParams) { //ingreso detalle de parametros res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, DetParam.paratemer_id, DetParam.parameter_value); if (res.codigo < 0) { return(res); } } } } } //actualizo detalles de inventarios res = ACTUALIZA_PARTES_HASTA(detalle_articulos, partToDown.id, newcantidad, newfecha); if (res.codigo < 0) { return(res); } res.set_ok(); } catch (Exception ex) { res.set(-1, ex.StackTrace); } return(res); }
public RespuestaAccion castigo_act(int codigo_articulo, int parte_articulo, DateTime newfecha, int newcantidad, string usuario, List <C.DetalleArticulo> detalle_articulos) { SV_VALIDATY VBaja = Vigencias.CASTIGO(); return(baja_act(codigo_articulo, parte_articulo, newfecha, newcantidad, usuario, detalle_articulos, VBaja)); }
//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); }