示例#1
0
        private SV_TRANSACTION_HEADER PurchaseHeadTrans(int batch_id)
        {
            SV_BATCH_ARTICLE lote  = lotes.ById(batch_id);
            SV_PART          part  = Partes.ByLotePart(batch_id, 0);
            DateTime         fecha = Partes.FirstDateLote(batch_id, lote.purchase_date);
            var MyHeads            = cabeceras.byPartFechaFix(part.id, fecha);

            return(MyHeads);
        }
示例#2
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);
        }
示例#3
0
        public TRANSACTION_HEADER TRANSACTION_HEAD_NEW(SV_PART article_part, 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 == article_part.id
                                     select a.purchase_date).First();

            var head = new TRANSACTION_HEADER();

            head.article_part_id   = article_part.id;
            head.head_index        = GetNextHeadIndex(article_part.id);
            head.trx_ini           = source.fecha_inicio;
            head.trx_end           = (DateTime)source.fecha_fin;
            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;
            head.method_revalue_id = 1;
            int cGest;

            if (Int32.TryParse(source.gestion.ToString(), out cGest))
            {
                head.manage_id = cGest;
            }
            else
            {
                head.manage_id = null;
            }
            _context.TRANSACTIONS_HEADERS.AddObject(head);

            _context.SaveChanges();
            if (head.id == 0)
            {
                _context.ObjectStateManager.ChangeObjectState(head, System.Data.EntityState.Added);
            }

            _load_transactions_headers();

            return(head);
        }
示例#4
0
文件: MOVEMENTS.cs 项目: akuze18/AFN2
        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);
        }
示例#5
0
文件: MOVEMENTS.cs 项目: akuze18/AFN2
        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);
        }