private void EstablecerPreciosUnitariosDeConsolidado()
 {
     try
     {
         foreach (var polizaDetalle in PolizaDetalles.Where(pd => pd.UNITARY_PRICE > 0))
         {
             foreach (var polizaCon in PolizaDetallesParaConsolidado.Where(pc => pc.MATERIAL_ID == polizaDetalle.MATERIAL_ID))
             {
                 polizaCon.UNITARY_PRICE  = polizaDetalle.UNITARY_PRICE;
                 polizaCon.CUSTOMS_AMOUNT = polizaCon.QTY * polizaCon.UNITARY_PRICE;
             }
         }
     }
     catch (Exception exception)
     {
         InteraccionConUsuarioServicio.MensajeErrorDialogo(exception.Message);
     }
 }
        private void CargarPlantillaExcel()
        {
            OpenFileDialog dialogo = new OpenFileDialog();

            dialogo.Filter           = "Excel xlsx (*.xlsx)|*.xlsx";
            dialogo.FilterIndex      = 2;
            dialogo.RestoreDirectory = true;
            string docIdExcel = string.Empty;
            var    poliza     = Polizas.FirstOrDefault(x => x.IS_SELECTED);

            if (poliza == null)
            {
                InteraccionConUsuarioServicio.Mensaje("Debe seleccionar la póliza para cargar la plantilla.");
                return;
            }

            if (dialogo.ShowDialog() == DialogResult.OK)
            {
                var     workbook  = new XLWorkbook(dialogo.FileName);
                var     worksheet = workbook.Worksheet("Detalle");
                DataSet dsHead    = new DataSet();
                DataSet dsDet     = new DataSet();
                docIdExcel = worksheet.Cell(2, 3).Value.ToString();

                if (!Polizas.ToList().Exists(x => x.CODIGO_POLIZA == docIdExcel))
                {
                    InteraccionConUsuarioServicio.Mensaje("El documento número " + docIdExcel + " no se encuentra en un estado para generar costeo o su costeo ya ha sido guardado. ");
                    return;
                }

                if (poliza.CODIGO_POLIZA != docIdExcel)
                {
                    InteraccionConUsuarioServicio.Mensaje("El documento de excel hace referencia al documento  (" + docIdExcel + "), por favor seleccionelo antes de cargar.");
                    return;
                }

                var  excelTable     = worksheet.Tables.Table(0);
                bool banderaError   = false;
                bool banderaPrimero = true;
                foreach (var excelRow in excelTable.RowsUsed())
                {
                    if (banderaPrimero || excelRow.Cell(1).GetString() == "Total:")
                    {
                        banderaPrimero = false;
                    }
                    else
                    {
                        decimal costo = default(decimal);
                        if (!decimal.TryParse(excelRow.Cell(4) != null ? excelRow.Cell(4).GetString() : "0", out costo))
                        {
                            banderaError = true;
                            costo        = 0;
                        }
                        PolizaDetalles.Where(x => x.MATERIAL_ID == excelRow.Cell(1).GetString()).ForEach(x =>
                        {
                            x.UNITARY_PRICE  = costo;
                            x.CUSTOMS_AMOUNT = costo * x.QTY;
                        });
                    }
                }
                if (banderaError)
                {
                    InteraccionConUsuarioServicio.Mensaje(
                        "Uno o varios elementos fallaron en la lectura del excel y les asignó un costo 0.");
                }
                else
                {
                    InteraccionConUsuarioServicio.MensajeExito(" Carga realizada con éxito " + docIdExcel);
                }
            }
            UiGridControlDetalle.RefreshDataSource();
        }