Exemple #1
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);
        }
Exemple #2
0
        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);
        }