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); }
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); }
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); }
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); }
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); }
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); }
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 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); }
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); }
public RespuestaAccion INGRESO_ATRIB_LOTE(int lote_art, int atributo_id, string detalle, bool mostrar) { var res = new RespuestaAccion(); try { DateTime FechaIni, FechaFin; int existe; FechaIni = this.Partes.ByLotePart(lote_art, 0).first_date; FechaFin = DateTime.MaxValue; existe = this.inv_articulos_details.ForArticle(lote_art, null, atributo_id).id; if (existe == 0) { //no hay registro, por lo tanto podemos ingresar uno var DetailAttrNew = new ARTICLES_VALUES(); DetailAttrNew.batch_id = lote_art; DetailAttrNew.article_id = null; DetailAttrNew.attrib_id = atributo_id; DetailAttrNew.detail = detalle; DetailAttrNew.date_init = FechaIni; DetailAttrNew.date_end = FechaFin; DetailAttrNew.imprimir = mostrar; _context.ARTICLES_VALUES.AddObject(DetailAttrNew); res.set(1, "INSERT"); } else { //ya hay un registro, por lo tanto actualizamos el registro var DetailAttrCurr = _context.ARTICLES_VALUES.Where(av => av.id == existe).First(); //DetailAttrCurr.batch_id = lote_art; //DetailAttrCurr.attrib_id = atributo_id; DetailAttrCurr.detail = detalle; DetailAttrCurr.date_init = FechaIni; DetailAttrCurr.date_end = FechaFin; DetailAttrCurr.imprimir = mostrar; res.set(0, "UPDATE"); } _context.SaveChanges(); } catch (Exception ex) { res.set(-1, ex.StackTrace); } return(res); }
//public RespuestaAccion REGISTER_SALE_HEAD(int parteId, DateTime fechaVenta, SV_TRANSACTION_HEADER prevHead, string userName) //{ // var Vventa = Vigencias.VENTA(); // return REGISTER_DOWNS_HEAD(parteId, fechaVenta, prevHead, userName, Vventa); //} //public RespuestaAccion REGISTER_DISPOSAL_HEAD(int parteId, DateTime fechaVenta, SV_TRANSACTION_HEADER prevHead, string userName) //{ // var Vcastigo = Vigencias.CASTIGO(); // return REGISTER_DOWNS_HEAD(parteId, fechaVenta, prevHead, userName, Vcastigo); //} public RespuestaAccion REGISTER_DOWNS_HEAD(int parteId, DateTime fechaBaja, SV_TRANSACTION_HEADER prevHead, string userName, SV_VALIDATY tipo_baja) { var res = new RespuestaAccion(); string reference = ""; switch (tipo_baja.id) { case 2: reference = _ref_sales; break; case 3: reference = _ref_disposal; break; default: reference = _ref_error; break; } try { TRANSACTION_HEADER headDown = new TRANSACTION_HEADER(); headDown.article_part_id = parteId; headDown.head_index = GetNextHeadIndex(parteId); headDown.trx_ini = fechaBaja; headDown.trx_end = prevHead.trx_end; headDown.ref_source = reference; headDown.zone_id = prevHead.zone_id; headDown.subzone_id = prevHead.subzone_id; headDown.kind_id = prevHead.kind_id; headDown.subkind_id = prevHead.subkind_id; headDown.category_id = prevHead.category_id; headDown.user_own = userName; headDown.manage_id = prevHead.manage_id; headDown.method_revalue_id = prevHead.method_revalue_id; TRANSACTION_HEADER _prevHead = (from h in _context.TRANSACTIONS_HEADERS where h.id == prevHead.id select h).FirstOrDefault(); _prevHead.trx_end = fechaBaja; _context.TRANSACTIONS_HEADERS.AddObject(headDown); _context.SaveChanges(); res.set_ok(); res.result_objs.Add((SV_TRANSACTION_HEADER)headDown); } catch (Exception ex) { res.set(-1, ex.StackTrace); } return(res); }
public 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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public RespuestaAccion CAMBIO_ZONA(int codigo_articulo, int parte_articulo, DateTime newfecha, GENERIC_VALUE newzona, GENERIC_VALUE newsubzona, int newcantidad, string usuario, List <C.DetalleArticulo> detalle_articulos) { var res = new RespuestaAccion(); //TODO: implementar cambio de zona try { //valido que parte existe SV_PART partToSell = Partes.ByLotePart(codigo_articulo, parte_articulo); if (partToSell == null) { res.set(-2, "Activo Fijo no puede ser cambiado, ya que no existe la parte solicitada"); return(res); } //determino si necesito crear una nueva parte para vender if (partToSell.quantity > newcantidad) { res = CREATE_NEW_PART_FROM(codigo_articulo, partToSell.id, newcantidad, newfecha); if (res.codigo < 0) { return(res); } int newPartId = res.result_objs[0].id; partToSell = Partes.ById(newPartId); } //determino cabecera vigente SV_TRANSACTION_HEADER headPrev = cabeceras.byPartFechaValid(partToSell.id, newfecha); if (headPrev == null) { res.set(-3, "Activo Fijo no puede ser cambiado, no tiene una transaccion vigente al periodo"); return(res); } //crear nueva cabecera de transaccion res = REGISTER_CHANGE_HEAD(partToSell.id, newfecha, newzona, newsubzona, headPrev, usuario); //TODO: reporto en log hitos if (res.codigo < 0) { return(res); } var headChange = res.result_objs[0]; //copio los detalles anteriores a la nueva cabecera (no aplico ningun calculo adicional) List <SV_TRANSACTION_DETAIL> findDetails = detalles.GetByHead(headPrev.id); foreach (var Detail in findDetails) { //ingreso detalle res = REGISTER_CHANGE_DETAIL(headChange.id, Detail); if (res.codigo < 0) { return(res); } } //copio los detalles de valores anteriores a la nueva cabecera (no aplica ningun calculo adicional) List <SV_TRANSACTION_PARAMETER_DETAIL> findDetailsParams = DetallesParametros.ByHead(headPrev.id); foreach (var DetParam in findDetailsParams) { //ingreso detalle de parametros res = REGISTER_PARAM_DETAIL(headChange.id, DetParam.system_id, DetParam.paratemer_id, DetParam.parameter_value); if (res.codigo < 0) { return(res); } } //actualizo detalles de inventarios res = ACTUALIZA_PARTES(detalle_articulos, partToSell.id, newcantidad); if (res.codigo < 0) { return(res); } res.set_ok(); } catch (Exception ex) { res.set(-1, ex.StackTrace); } return(res); }
private RespuestaAccion baja_act(int codigo_articulo, int parte_articulo, DateTime newfecha, int newcantidad, string usuario, List <C.DetalleArticulo> detalle_articulos, SV_VALIDATY tipo_baja) { var res = new RespuestaAccion(); try { ACode.Vperiodo prev_periodo = new ACode.Vperiodo(newfecha.Year, newfecha.Month) - 1; //valido que parte existe SV_PART partToDown = Partes.ByLotePart(codigo_articulo, parte_articulo); if (partToDown == null) { res.set(-2, "Activo Fijo no puede ser vendido, ya que no existe la parte solicitada"); return(res); } //determino si necesito crear una nueva parte para bajar if (partToDown.quantity > newcantidad) { res = CREATE_NEW_PART_FROM(codigo_articulo, partToDown.id, newcantidad, newfecha); if (res.codigo < 0) { return(res); } int newPartId = res.result_objs[0].id; partToDown = Partes.ById(newPartId); } //determino cabecera vigente SV_TRANSACTION_HEADER headPrev = cabeceras.byPartFechaValid(partToDown.id, newfecha); if (headPrev == null) { res.set(-3, "Activo Fijo no puede ser dado de baja (" + tipo_baja.name + "), no tiene una transaccion vigente al periodo"); return(res); } //crear nueva cabecera de transaccion res = REGISTER_DOWNS_HEAD(partToDown.id, newfecha, headPrev, usuario, tipo_baja); //TODO: reporto en log hitos if (res.codigo < 0) { return(res); } var headDown = res.result_objs[0]; var AllSystems = sistemas.All(); //agregar valores de detalle y parametros para la cabecera foreach (SV_SYSTEM currSys in AllSystems) { //compruebo si la transaccion anterior tenía detalle para este ambiente SV_TRANSACTION_DETAIL findDet = detalles.GetByPartSystem(headPrev.id, currSys); if (findDet != null) { //ingreso detalle de transaccion res = REGISTER_DOWNS_DETAIL(headDown.id, currSys.id, tipo_baja); if (res.codigo < 0) { return(res); } if (currSys.ENVIORMENT.depreciation_rate == "daily") { //si deprecio en días (IFRS) debo depreciar solo los dias desde el ultimo cierre var currProc = get_detailed(currSys, prev_periodo.last, codigo_articulo, true, true).FirstOrDefault(); if (currProc != null) { //determino los valores de depreciados segun corresponda var depreciado = new DETAIL_DEPRECIATE(currProc, 0, newfecha); //ingreso parametros decimal monto_param; if (depreciado.val_AF_cm != 0) { SV_PARAMETER currParam = parametros.PrecioBase; monto_param = depreciado.val_AF_cm / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.DA_AF != 0) { SV_PARAMETER currParam = parametros.DepreciacionAcum; monto_param = depreciado.DA_AF / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.credi_adi_cm != 0) { SV_PARAMETER currParam = parametros.Credito; monto_param = depreciado.credi_adi_cm / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.deter != 0) { SV_PARAMETER currParam = parametros.Deterioro; monto_param = depreciado.deter / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.val_res != 0) { SV_PARAMETER currParam = parametros.ValorResidual; monto_param = depreciado.val_res / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.vu_resi != 0) { SV_PARAMETER currParam = parametros.VidaUtil; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, depreciado.vu_resi); } if (depreciado.preparacion != 0) { SV_PARAMETER currParam = parametros.Preparacion; monto_param = depreciado.preparacion / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.transporte != 0) { SV_PARAMETER currParam = parametros.Transporte; monto_param = depreciado.transporte / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.montaje != 0) { SV_PARAMETER currParam = parametros.Montaje; monto_param = depreciado.montaje / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.desmantelamiento != 0) { SV_PARAMETER currParam = parametros.Desmantelamiento; monto_param = depreciado.desmantelamiento / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.honorario != 0) { SV_PARAMETER currParam = parametros.Honorario; monto_param = depreciado.honorario / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } if (depreciado.revalorizacion != 0) { SV_PARAMETER currParam = parametros.Revalorizacion; monto_param = depreciado.revalorizacion / depreciado.cantidad; res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, currParam.id, monto_param); } } else { res.set(-4, "No se encontro información vigente para dar de baja"); return(res); } } else //if (currSys.ENVIORMENT.depreciation_rate == "monthly") { //copio los detalles de valores anteriores a la nueva cabecera (no aplica ningun calculo adicional) List <SV_TRANSACTION_PARAMETER_DETAIL> findDetailsParams = DetallesParametros.ByHeadSys(headPrev.id, currSys); foreach (var DetParam in findDetailsParams) { //ingreso detalle de parametros res = REGISTER_PARAM_DETAIL(headDown.id, currSys.id, DetParam.paratemer_id, DetParam.parameter_value); if (res.codigo < 0) { return(res); } } } } } //actualizo detalles de inventarios res = ACTUALIZA_PARTES_HASTA(detalle_articulos, partToDown.id, newcantidad, newfecha); if (res.codigo < 0) { return(res); } res.set_ok(); } catch (Exception ex) { res.set(-1, ex.StackTrace); } return(res); }
public RespuestaAccion 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); }
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); }