//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 TRANSACTION_HEADER TRANSACTION_HEAD_NEW(SV_TRANSACTION_HEADER Tprevious, AFN_INVENTARIO source) //para migracion { DateTime PurchaseDate = (from a in _context.BATCHS_ARTICLES join b in _context.PARTS on a.id equals b.article_id where b.id == Tprevious.article_part_id select a.purchase_date).First(); var head = new TRANSACTION_HEADER(); head.article_part_id = Tprevious.article_part_id; head.head_index = GetNextHeadIndex(Tprevious.article_part_id); head.trx_ini = source.fecha_inicio; head.trx_end = Tprevious.trx_end; head.ref_source = ref_source(source.fecha_inicio, source, PurchaseDate); head.zone_id = zonas.ByCode(source.zona).id; head.subzone_id = (int)source.subzona + 1; head.kind_id = Clases.ByCode(source.clase).id; head.subkind_id = subclases.ByCode(source.subclase).id; head.category_id = categorias.ByCode(source.categoria).id; head.user_own = source.ingresado_por; int cGest; if (Int32.TryParse(source.gestion.ToString(), out cGest)) { head.manage_id = cGest; } else { head.manage_id = null; } head.method_revalue_id = 1; _context.TRANSACTIONS_HEADERS.AddObject(head); //actualizo la fecha fin de la cabecera previa var prev_head = (from h in _context.TRANSACTIONS_HEADERS where h.id == Tprevious.id select h).First(); prev_head.trx_end = source.fecha_inicio; _context.SaveChanges(); if (head.id == 0) { _context.ObjectStateManager.ChangeObjectState(head, System.Data.EntityState.Added); } _load_transactions_headers(); return(head); }
public RespuestaAccion CAMBIO_ZONA(int codigo_articulo, int parte_articulo, DateTime newfecha, GENERIC_VALUE newzona, GENERIC_VALUE newsubzona, int newcantidad, string usuario, List <C.DetalleArticulo> detalle_articulos) { var res = new RespuestaAccion(); //TODO: implementar cambio de zona try { //valido que parte existe SV_PART partToSell = Partes.ByLotePart(codigo_articulo, parte_articulo); if (partToSell == null) { res.set(-2, "Activo Fijo no puede ser cambiado, ya que no existe la parte solicitada"); return(res); } //determino si necesito crear una nueva parte para vender if (partToSell.quantity > newcantidad) { res = CREATE_NEW_PART_FROM(codigo_articulo, partToSell.id, newcantidad, newfecha); if (res.codigo < 0) { return(res); } int newPartId = res.result_objs[0].id; partToSell = Partes.ById(newPartId); } //determino cabecera vigente SV_TRANSACTION_HEADER headPrev = cabeceras.byPartFechaValid(partToSell.id, newfecha); if (headPrev == null) { res.set(-3, "Activo Fijo no puede ser cambiado, no tiene una transaccion vigente al periodo"); return(res); } //crear nueva cabecera de transaccion res = REGISTER_CHANGE_HEAD(partToSell.id, newfecha, newzona, newsubzona, headPrev, usuario); //TODO: reporto en log hitos if (res.codigo < 0) { return(res); } var headChange = res.result_objs[0]; //copio los detalles anteriores a la nueva cabecera (no aplico ningun calculo adicional) List <SV_TRANSACTION_DETAIL> findDetails = detalles.GetByHead(headPrev.id); foreach (var Detail in findDetails) { //ingreso detalle res = REGISTER_CHANGE_DETAIL(headChange.id, Detail); if (res.codigo < 0) { return(res); } } //copio los detalles de valores anteriores a la nueva cabecera (no aplica ningun calculo adicional) List <SV_TRANSACTION_PARAMETER_DETAIL> findDetailsParams = DetallesParametros.ByHead(headPrev.id); foreach (var DetParam in findDetailsParams) { //ingreso detalle de parametros res = REGISTER_PARAM_DETAIL(headChange.id, DetParam.system_id, DetParam.paratemer_id, DetParam.parameter_value); if (res.codigo < 0) { return(res); } } //actualizo detalles de inventarios res = ACTUALIZA_PARTES(detalle_articulos, partToSell.id, newcantidad); if (res.codigo < 0) { return(res); } 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 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); }