/// <summary> /// Actualiza el campo 'Total facturas' de la lista 'Almacén' /// </summary> /// <param name="elItem"></param> private void ActualizarTotalFacturas(SPListItem itemAlmacen) { double totalFacturas = 0; SPQuery consulta = new SPQuery(); consulta.Query = "<Where><Eq><FieldRef Name='Almac_x00e9_n_x0020_asociado_x00' />" + "<Value Type='Text'>" + itemAlmacen.ID + "</Value></Eq></Where>"; SPListItemCollection itemsFacturas = itemAlmacen.Web.Lists[LISTA_FACTURAS].GetItems(consulta); foreach (SPListItem itemFactura in itemsFacturas) { totalFacturas = totalFacturas + double.Parse(itemFactura["Total factura"].ToString()); } itemAlmacen["Total facturas"] = totalFacturas; using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { try { itemAlmacen.Web.AllowUnsafeUpdates = true; itemAlmacen.SystemUpdate(); } finally { itemAlmacen.Web.AllowUnsafeUpdates = false; } } }
/// <summary> /// Actualiza el campo 'Total factura' de la lista 'Facturas' /// </summary> /// <param name="elItem"></param> private void ActualizarTotalFactura(SPListItem itemFactura) { double totalFactura = 0; SPQuery consulta = new SPQuery(); consulta.Query = "<Where><Eq><FieldRef Name='Factura_x0020_asociada_x003a_ID' />" + "<Value Type='Text'>" + itemFactura.ID + "</Value></Eq></Where>"; SPListItemCollection itemsPedidos = itemFactura.Web.Lists[LISTA_ITEMS_PEDIDOS].GetItems(consulta); foreach (SPListItem itemPedido in itemsPedidos) { totalFactura = totalFactura + double.Parse(SubcadenaDespues(itemPedido["Precio extendido"]).Replace('.', ',')); } itemFactura["Total factura"] = totalFactura; using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { try { itemFactura.Web.AllowUnsafeUpdates = true; itemFactura.SystemUpdate(); } finally { itemFactura.Web.AllowUnsafeUpdates = false; } } }
/// <summary> /// Redistribuye (prorratea) los costos definidos al envio /// para cada ítem pedido asociado /// </summary> /// <param name="itemEnvio"></param> private void RedistribuirCostosEnvio(SPListItem itemEnvio) { SPList listaParametros = itemEnvio.Web.Lists[LISTA_PARAMETROS]; SPList listaFacturas = itemEnvio.Web.Lists[LISTA_FACTURAS]; SPList listaAlmacen = itemEnvio.Web.Lists[LISTA_ALMACEN]; SPList listaItemsPedidos = itemEnvio.Web.Lists[LISTA_ITEMS_PEDIDOS]; bool prorrateoConArancel = true; #region Obtener el tipo de prorrateo SPQuery consultaParam = new SPQuery(); consultaParam.Query = "<Where><Eq><FieldRef Name='Title' />" + "<Value Type='Text'>" + PARAMETRO_TITULO + "</Value></Eq></Where>"; SPListItemCollection itemsParametros = listaParametros.GetItems(consultaParam); if (itemsParametros.Count != 0 && itemsParametros[0]["Valor parámetro"].ToString() == PARAMETRO_VALOR) { prorrateoConArancel = false; } #endregion #region Distribuir (prorratear) costos double totalEnvio = 0; double costoFletes = 0; double costoAranceles = 0; double costoAduana = 0; double costoTransportador = 0; double costoOtros = 0; totalEnvio = this.ObtenerTotalDelEnvio(itemEnvio); if (itemEnvio["Costo fletes"] != null) { costoFletes = double.Parse(itemEnvio["Costo fletes"].ToString()); } if (itemEnvio["Costo aranceles"] != null) { costoAranceles = double.Parse(itemEnvio["Costo aranceles"].ToString()); } if (itemEnvio["Costo aduana"] != null) { costoAduana = double.Parse(itemEnvio["Costo aduana"].ToString()); } if (itemEnvio["Costo transportador"] != null) { costoTransportador = double.Parse(itemEnvio["Costo transportador"].ToString()); } if (itemEnvio["Costo otros"] != null) { costoOtros = double.Parse(itemEnvio["Costo otros"].ToString()); } SPFieldLookupValueCollection almacenesAsociados = (SPFieldLookupValueCollection)itemEnvio["Almacenes asociados"]; foreach (SPFieldLookupValue almacenAsociado in almacenesAsociados) { SPListItem elAlmacen = listaAlmacen.GetItemByIdSelectedFields(almacenAsociado.LookupId, "Facturas_x0020_asociadas"); SPFieldLookupValueCollection facturasAsociadas = (SPFieldLookupValueCollection)elAlmacen["Facturas asociadas"]; foreach (SPFieldLookupValue facturaAsociada in facturasAsociadas) { SPListItem laFactura = listaFacturas.GetItemByIdSelectedFields(facturaAsociada.LookupId, "_x00cd_tems_x0020_asociados"); SPFieldLookupValueCollection itemsAsociados = (SPFieldLookupValueCollection)laFactura["Ítems asociados"]; foreach (SPFieldLookupValue itemAsociado in itemsAsociados) { SPListItem itemPedido = listaItemsPedidos.GetItemByIdSelectedFields( itemAsociado.LookupId, "Costo_x0020_fletes", "Costo_x0020_aranceles", "Costo_x0020_aduana", "Costo_x0020_transportador", "Costo_x0020_otros", "Precio_x0020_extendido", "Item_x0020_asociado"); double precioItem = double.Parse(SubcadenaDespues(itemPedido["Precio extendido"]).Replace('.', ',')); double porcentajeArancel = this.ObtenerPorcentajeArancel(itemPedido); if (prorrateoConArancel) {//TODO Prorrateo con aranceles, verificar el calculo itemPedido["Costo fletes"] = this.AplicarProrrateoConArancelFletes(precioItem, totalEnvio, costoFletes); itemPedido["Costo aranceles"] = this.AplicarProrrateoConArancelAranceles(precioItem, totalEnvio, costoFletes, porcentajeArancel); itemPedido["Costo aduana"] = this.AplicarProrrateoConArancelAduana(precioItem, totalEnvio, costoAduana, costoFletes); itemPedido["Costo transportador"] = this.AplicarProrrateoConArancelTransp(precioItem, totalEnvio, costoTransportador, costoFletes); itemPedido["Costo otros"] = this.AplicarProrrateoConArancelOtros(precioItem, totalEnvio, costoOtros, costoFletes); } else {//Prorrateo sin aranceles itemPedido["Costo fletes"] = this.AplicarProrrateoSinArancel(precioItem, totalEnvio, costoFletes); itemPedido["Costo aranceles"] = this.AplicarProrrateoSinArancel(precioItem, totalEnvio, costoAranceles); itemPedido["Costo aduana"] = this.AplicarProrrateoSinArancel(precioItem, totalEnvio, costoAduana); itemPedido["Costo transportador"] = this.AplicarProrrateoSinArancel(precioItem, totalEnvio, costoTransportador); itemPedido["Costo otros"] = this.AplicarProrrateoSinArancel(precioItem, totalEnvio, costoOtros); } using (DisabledItemEventsScope scope = new DisabledItemEventsScope()) { try { itemPedido.Web.AllowUnsafeUpdates = true; itemPedido.Update(); } finally { itemPedido.Web.AllowUnsafeUpdates = false; } } } } } #endregion }