Example #1
0
        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);
        }
Example #2
0
File: PART.cs Project: akuze18/AFN2
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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 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);
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        //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);
        }
Example #10
0
        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);
        }
Example #11
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);
        }
Example #12
0
File: PART.cs Project: akuze18/AFN2
        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);
        }
Example #13
0
        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);
        }
Example #14
0
        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);
        }
Example #15
0
        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_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 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);
        }
Example #18
0
File: PART.cs Project: akuze18/AFN2
        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);
        }
Example #19
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);
        }
Example #20
0
        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 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);
        }
Example #22
0
        public RespuestaAccion CREATE_SALES_DOC(string DocNumber, decimal ExtendedCost, DateTime DocDate, List <C.DisplayVentaPrecio> DetailsList)
        {
            var res = new RespuestaAccion();

            try
            {
                var SalesHeadNew = new SALES_HEAD();
                SalesHeadNew.docventa = DocNumber;
                SalesHeadNew.cost_ext = ExtendedCost;
                SalesHeadNew.docdate  = DocDate;

                _context.SALES_HEAD.AddObject(SalesHeadNew);

                foreach (var d in DetailsList)
                {
                    decimal diferencia = d.PrecioTotal - (d.PrecioUnitario * d.Cantidad);
                    if (diferencia == 0)
                    {
                        var NewSaleDetail = new SALES_DETAIL();
                        NewSaleDetail.SALES_HEAD = SalesHeadNew;
                        NewSaleDetail.part_id    = d.rowIndex;
                        NewSaleDetail.quantity   = d.Cantidad;
                        NewSaleDetail.unit_cost  = d.CostoUnitario;
                        NewSaleDetail.ext_cost   = d.CostoExtend;
                        NewSaleDetail.unit_price = d.PrecioUnitario;
                        NewSaleDetail.ext_price  = d.PrecioTotal;
                        NewSaleDetail.zone_id    = d.Zona.id;
                        NewSaleDetail.subzone_id = d.Subzona.id;
                        NewSaleDetail.kind_id    = d.Clase.id;
                        NewSaleDetail.docline    = DetailsList.IndexOf(d);

                        _context.SALES_DETAIL.AddObject(NewSaleDetail);
                    }
                    else
                    {
                        var NewSaleDetailA = new SALES_DETAIL();
                        NewSaleDetailA.SALES_HEAD = SalesHeadNew;
                        NewSaleDetailA.part_id    = d.rowIndex;
                        NewSaleDetailA.quantity   = 1;
                        NewSaleDetailA.unit_cost  = d.CostoUnitario;
                        NewSaleDetailA.ext_cost   = d.CostoUnitario;
                        NewSaleDetailA.unit_price = d.PrecioUnitario + diferencia;
                        NewSaleDetailA.ext_price  = d.PrecioUnitario + diferencia;
                        NewSaleDetailA.zone_id    = d.Zona.id;
                        NewSaleDetailA.subzone_id = d.Subzona.id;
                        NewSaleDetailA.kind_id    = d.Clase.id;
                        NewSaleDetailA.docline    = DetailsList.IndexOf(d);

                        _context.SALES_DETAIL.AddObject(NewSaleDetailA);

                        var NewSaleDetailB = new SALES_DETAIL();
                        NewSaleDetailB.SALES_HEAD = SalesHeadNew;
                        NewSaleDetailB.part_id    = d.rowIndex;
                        NewSaleDetailB.quantity   = d.Cantidad - 1;
                        NewSaleDetailB.unit_cost  = d.CostoUnitario;
                        NewSaleDetailB.ext_cost   = d.CostoUnitario * NewSaleDetailB.quantity;
                        NewSaleDetailB.unit_price = d.PrecioUnitario;
                        NewSaleDetailB.ext_price  = d.PrecioUnitario * NewSaleDetailB.quantity;
                        NewSaleDetailB.zone_id    = d.Zona.id;
                        NewSaleDetailB.subzone_id = d.Subzona.id;
                        NewSaleDetailB.kind_id    = d.Clase.id;
                        NewSaleDetailB.docline    = DetailsList.IndexOf(d);

                        _context.SALES_DETAIL.AddObject(NewSaleDetailB);
                    }
                }

                _context.SaveChanges();
                res.AddResultObj(SalesHeadNew.id, SalesHeadNew.GetType());
                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #23
0
        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);
        }
Example #24
0
        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);
        }
Example #25
0
        public RespuestaAccion INGRESO_OBC(DateTime fechaIngreso, int zonaId, string proveedorId, string docNumber, string glosaIngreso, decimal montoOriginal, DateTime fechaContable)
        {
            var res = new RespuestaAccion();

            try
            {
                var OBCHeadNew = new ASSET_IN_PROGRESS_HEAD();
                OBCHeadNew.tipo             = _InOBC;
                OBCHeadNew.trx_date         = fechaIngreso;
                OBCHeadNew.zone_id          = zonaId;
                OBCHeadNew.descrip          = glosaIngreso;
                OBCHeadNew.entrada_id       = null;
                OBCHeadNew.batch_id         = null;
                OBCHeadNew.post_date        = fechaContable;
                OBCHeadNew.aproval_state_id = EstadoAprobacion.CLOSE.id;
                _context.ASSETS_IN_PROGRESS_HEAD.AddObject(OBCHeadNew);

                //reviso detalle ingreso
                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 = Math.Round(montoOriginal / TipoCambio.YEN(fechaIngreso), 0);
                _context.ASSETS_IN_PROGRESS_DETAIL.AddObject(OBCDetailYENNew);

                //reviso documento asociado
                var findDoc = documentos.ByNumProv(docNumber, proveedorId);
                if (findDoc == null)
                {
                    var docNew = new DOCUMENT();
                    docNew.docnumber      = docNumber;
                    docNew.comment        = string.Empty;
                    docNew.proveedor_id   = proveedorId;
                    docNew.proveedor_name = Proveedor.getNameByCode(proveedorId);

                    var relatNew = new DOCS_OBC();
                    relatNew.ASSETS_IN_PROGRESS_HEAD = OBCHeadNew;
                    relatNew.DOCUMENT = docNew;
                    _context.DOCS_OBC.AddObject(relatNew);
                }
                else
                {
                    var relatNew = new DOCS_OBC();
                    relatNew.ASSETS_IN_PROGRESS_HEAD = OBCHeadNew;
                    relatNew.document_id             = findDoc.id;
                    _context.DOCS_OBC.AddObject(relatNew);
                }

                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #26
0
        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);
        }
Example #27
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);
        }
Example #28
0
        public RespuestaAccion MODIFICA_LOTE(int batch_id, string descripcion, string cod_proveedor, string documento, decimal total_compra, int vida_util, DateTime fecha_contab)
        {
            //TODO: Completar proceso para modificar un lote
            var res = new RespuestaAccion();

            try
            {
                BATCH_ARTICLE ToModif = (from c in _context.BATCHS_ARTICLES
                                         where c.id == batch_id
                                         select c).FirstOrDefault();
                if (ToModif == null)
                {
                    res.set(-2, "Codigo de lote a modificar no existe");
                    return(res);
                }
                ToModif.descrip           = descripcion;
                ToModif.initial_price     = total_compra;
                ToModif.initial_life_time = vida_util;
                ToModif.account_date      = fecha_contab;
                //ToModif.purchase_date //por definición no puede modificarse
                //ToModif.origin_id //por definición no puede modificarse
                //ToModif.type_asset_id //por definición no puede modificarse

                //Reviso documento
                if (documento != DOCUMENTS.defaultDocument && cod_proveedor != DOCUMENTS.defaultProveed)
                {
                    DOCUMENT DocModif = (from d in _context.DOCUMENTS
                                         where d.docnumber == documento && d.proveedor_id == cod_proveedor
                                         select d).FirstOrDefault();
                    if (DocModif == null)
                    {
                        //no existe el documento, se debe crear y asociar
                        DOCUMENT DocNuevo = new DOCUMENT();
                        DocNuevo.proveedor_id   = cod_proveedor;
                        DocNuevo.docnumber      = documento;
                        DocNuevo.comment        = string.Empty;
                        DocNuevo.proveedor_name = Proveedor.getNameByCode(cod_proveedor);

                        //reviso asociaciones previas del lote
                        var allowRelations = (from rl in _context.DOCS_BATCH
                                              where rl.batch_id == batch_id
                                              select rl).FirstOrDefault();
                        if (allowRelations == null)
                        {
                            var relation = new DOCS_BATCH();
                            relation.BATCHS_ARTICLES = ToModif;
                            relation.DOCUMENT        = DocNuevo;
                            _context.DOCS_BATCH.AddObject(relation);
                        }
                        else
                        {
                            //documento existe, se debe actualizar la asociacion
                            allowRelations.DOCUMENT = DocNuevo;
                        }
                    }
                    else
                    {
                        //reviso asociaciones previas
                        var allowRelations = (from rl in _context.DOCS_BATCH
                                              where rl.batch_id == batch_id
                                              select rl).FirstOrDefault();
                        if (allowRelations == null)
                        {
                            //documento existe y debe asociar al batch
                            var relation = new DOCS_BATCH();
                            relation.BATCHS_ARTICLES = ToModif;
                            relation.DOCUMENT        = DocModif;
                        }
                        else
                        {
                            //documento existe, se debe actualizar la asociacion
                            allowRelations.DOCUMENT = DocModif;
                        }
                    }
                }
                _context.SaveChanges();

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }
Example #29
0
File: PART.cs Project: akuze18/AFN2
        public RespuestaAccion CREATE_NEW_PART_FROM(int batch_id, int source_part_id, int quantity, DateTime movement_date)
        {
            var res = new RespuestaAccion();

            try
            {
                var source_part       = Partes.ById(source_part_id);
                int current_max_index = Partes.ByLote(batch_id).Max(p => p.part_index);

                //creo nueva parte
                var nueva_parte = new PART();
                nueva_parte.article_id = batch_id;
                nueva_parte.part_index = current_max_index + 1;
                nueva_parte.quantity   = quantity;
                nueva_parte.first_date = movement_date;
                _context.PARTS.AddObject(nueva_parte);

                //actualizo cantidad parte antigua
                var busca = _context.PARTS.Where(p => p.id == source_part_id).FirstOrDefault();
                busca.quantity = source_part.quantity - quantity;

                //copio transacciones a la nueva parte y sus relacionados desde la parte origen
                //copio cabeceras de transacciones
                var source_trx_heads = cabeceras.ByParte(source_part_id);
                foreach (SV_TRANSACTION_HEADER s_trx_head in source_trx_heads)
                {
                    TRANSACTION_HEADER nueva_head = new TRANSACTION_HEADER();
                    nueva_head.PART              = nueva_parte; //con este relacionamos a la nueva parte
                    nueva_head.head_index        = s_trx_head.head_index;
                    nueva_head.trx_ini           = s_trx_head.trx_ini;
                    nueva_head.trx_end           = s_trx_head.trx_end;
                    nueva_head.ref_source        = s_trx_head.ref_source;
                    nueva_head.zone_id           = s_trx_head.zone_id;
                    nueva_head.subzone_id        = s_trx_head.subzone_id;
                    nueva_head.kind_id           = s_trx_head.kind_id;
                    nueva_head.subkind_id        = s_trx_head.subkind_id;
                    nueva_head.category_id       = s_trx_head.category_id;
                    nueva_head.user_own          = s_trx_head.user_own;
                    nueva_head.manage_id         = s_trx_head.manage_id;
                    nueva_head.method_revalue_id = s_trx_head.method_revalue_id;
                    _context.TRANSACTIONS_HEADERS.AddObject(nueva_head);

                    //copio detalles de transacciones
                    var source_trx_details = detalles.GetByHead(s_trx_head.id);
                    foreach (SV_TRANSACTION_DETAIL s_trx_detail in source_trx_details)
                    {
                        TRANSACTION_DETAIL nuevo_detail = new TRANSACTION_DETAIL();
                        nuevo_detail.TRANSACTION_HEADER = nueva_head; //con este relacionamos a la nueva cabecera
                        nuevo_detail.system_id          = s_trx_detail.system_id;
                        nuevo_detail.validity_id        = s_trx_detail.validity_id;
                        nuevo_detail.depreciate         = s_trx_detail.depreciate;
                        nuevo_detail.allow_credit       = s_trx_detail.allow_credit;
                        _context.TRANSACTIONS_DETAILS.AddObject(nuevo_detail);
                    }
                    //copio detalle de parametros de transaccion
                    var source_trx_params = DetallesParametros.ByHead(s_trx_head.id);
                    foreach (SV_TRANSACTION_PARAMETER_DETAIL s_trx_param in source_trx_params)
                    {
                        TRANSACTION_PARAMETER_DETAIL nuevo_param = new TRANSACTION_PARAMETER_DETAIL();
                        nuevo_param.TRANSACTION_HEADER = nueva_head; //con este relacionamos a la nueva cabecera
                        nuevo_param.system_id          = s_trx_param.system_id;
                        nuevo_param.paratemer_id       = s_trx_param.paratemer_id;
                        nuevo_param.parameter_value    = s_trx_param.parameter_value;
                        _context.TRANSACTIONS_PARAMETERS_DETAILS.AddObject(nuevo_param);
                    }
                }
                _context.SaveChanges();
                _load_parts();
                _load_transactions_headers();
                _load_transactions_details();
                _load_transactions_param_details();
                res.result_objs.Add((SV_PART)nueva_parte);

                res.set_ok();
            }
            catch (Exception ex)
            {
                res.set(-1, ex.StackTrace);
            }
            return(res);
        }