コード例 #1
0
        /// <summary>
        /// Calcula los valores del registro seleccionado
        /// </summary>
        private void CalcularTotalesItems(ECMP_OrdenServicioDetalle ObjECMP_OrdenServicioDetalle)
        {
            try
            {
                var varObjECMP_OrdenServicio = (ECMP_OrdenServicio)MyHeader.DataContext;
                //factura
                if (rbIncluidoIGV.IsChecked.Value)
                {
                    //Calculo con incluir IGV
                    decimal dmlPrecioUnitario = decimal.Round((ObjECMP_OrdenServicioDetalle.PrecioUnitarioTemp / ((decimal.Round(varObjECMP_OrdenServicio.IGV * 100, 2) + 100) / 100)), 8);
                    decimal dmlImporte        = decimal.Round((dmlPrecioUnitario * ObjECMP_OrdenServicioDetalle.Cantidad), 8);
                    decimal dmlImporteIGV     = decimal.Round(dmlImporte * varObjECMP_OrdenServicio.IGV, 8);

                    ObjECMP_OrdenServicioDetalle.PrecioUnitario = dmlPrecioUnitario;
                    ObjECMP_OrdenServicioDetalle.Importe        = dmlImporte;
                    ObjECMP_OrdenServicioDetalle.ImporteIGV     = dmlImporteIGV;
                }
                else if (rbExonerado.IsChecked.Value)
                {
                    //Calculo cuando es Honorario
                    decimal dmlTasa    = 0;
                    decimal dmlImporte = ObjECMP_OrdenServicioDetalle.PrecioUnitarioTemp * ObjECMP_OrdenServicioDetalle.Cantidad;
                    if (chkAplicarRetencion.IsChecked.Value)
                    {
                        dmlTasa = (SGCMethod.GetTasaHonorario(dmlImporte) / 100);
                    }
                    decimal dmlImporteIGV = (dmlImporte * dmlTasa);

                    ObjECMP_OrdenServicioDetalle.PrecioUnitario = decimal.Round(ObjECMP_OrdenServicioDetalle.PrecioUnitarioTemp, 8);
                    ObjECMP_OrdenServicioDetalle.Importe        = decimal.Round(dmlImporte, 8);
                    ObjECMP_OrdenServicioDetalle.ImporteIGV     = decimal.Round(dmlImporteIGV, 8);
                }
                else
                {
                    //Calculo sin incluir IGV
                    decimal dmlImporte    = decimal.Round((ObjECMP_OrdenServicioDetalle.PrecioUnitarioTemp * ObjECMP_OrdenServicioDetalle.Cantidad), 8);
                    decimal dmlImporteIGV = decimal.Round(dmlImporte * varObjECMP_OrdenServicio.IGV, 8);

                    ObjECMP_OrdenServicioDetalle.PrecioUnitario = ObjECMP_OrdenServicioDetalle.PrecioUnitarioTemp;
                    ObjECMP_OrdenServicioDetalle.Importe        = dmlImporte;
                    ObjECMP_OrdenServicioDetalle.ImporteIGV     = dmlImporteIGV;
                }

                CalcularTotales();
            }
            catch (Exception) { }
        }
コード例 #2
0
        /// <summary>
        /// Calculta los totales
        /// </summary>
        private void CalcularTotales()
        {
            try
            {
                var varObjECMP_OrdenServicio      = (ECMP_OrdenServicio)MyHeader.DataContext;
                var ListECMP_OrdenServicioDetalle = (dgDetalleServicio.Items.OfType <ECMP_OrdenServicioDetalle>()).ToList();
                if (ListECMP_OrdenServicioDetalle != null && ListECMP_OrdenServicioDetalle.Count > 0)
                {
                    decimal dmlTotal               = 0;
                    decimal dmlGravada             = 0;
                    decimal dmlImporteRetencionIGV = 0;

                    //factura
                    if (rbIncluidoIGV.IsChecked.Value)
                    {
                        //Calculo con incluir IGV
                        dmlGravada             = ListECMP_OrdenServicioDetalle.Sum(x => (x.ObjEMNF_Servicio.ObjEMNF_OperacionIGV.CodOperacionIGV == "GB" ? x.Importe : 0));
                        dmlImporteRetencionIGV = ListECMP_OrdenServicioDetalle.Sum(x => (x.ObjEMNF_Servicio.ObjEMNF_OperacionIGV.CodOperacionIGV == "GB" ? x.ImporteIGV : 0));
                        dmlTotal = dmlGravada + dmlImporteRetencionIGV;

                        lblTitleOrdenServicio02.Text = "Gravada";
                        lblTitleOrdenServicio03.Text = "IGV " + decimal.Round(varObjECMP_OrdenServicio.IGV * 100, 2) + "%";
                        lblTitleOrdenServicio04.Text = "Importe Total " + ObjECMP_OrdenServicio.ObjESGC_Moneda.Simbolo;
                        strNetoText = "Importe Total";
                    }
                    else if (rbExonerado.IsChecked.Value)
                    {
                        //Calculo cuando es Honorario
                        dmlGravada = ListECMP_OrdenServicioDetalle.Sum(o => o.Importe);
                        decimal dmlTasa = (SGCMethod.GetTasaHonorario(dmlGravada) / 100);
                        dmlImporteRetencionIGV = dmlGravada * dmlTasa;
                        dmlTotal = dmlGravada - dmlImporteRetencionIGV;

                        lblTitleOrdenServicio02.Text = "Total Honorario";
                        lblTitleOrdenServicio03.Text = "Retención " + decimal.Round(dmlTasa * 100, 2) + "%";
                        lblTitleOrdenServicio04.Text = "Total Neto " + ObjECMP_OrdenServicio.ObjESGC_Moneda.Simbolo;
                        strNetoText = "Total Neto";
                    }
                    else
                    {
                        //Calculo sin incluir IGV
                        ListECMP_OrdenServicioDetalle.ForEach(x => { if (x.ObjEMNF_Servicio.ObjEMNF_OperacionIGV.CodOperacionIGV == "GB")
                                                                     {
                                                                         dmlGravada += x.PrecioUnitario * x.Cantidad;
                                                                     }
                                                              });
                        dmlImporteRetencionIGV = dmlGravada * varObjECMP_OrdenServicio.IGV;
                        dmlTotal = dmlGravada + dmlImporteRetencionIGV;

                        lblTitleOrdenServicio02.Text = "Gravada";
                        lblTitleOrdenServicio03.Text = "IGV " + decimal.Round(varObjECMP_OrdenServicio.IGV * 100, 2) + "%";
                        lblTitleOrdenServicio04.Text = "Importe Total " + ObjECMP_OrdenServicio.ObjESGC_Moneda.Simbolo;
                        strNetoText = "Importe Total";
                    }
                    var First = ListECMP_OrdenServicioDetalle.FirstOrDefault();
                    if (First.ObjEMNF_Servicio.ObjEMNF_OperacionIGV.CodOperacionIGV == "EX" && !rbExonerado.IsChecked.Value)
                    {
                        lblTitleOrdenServicio02.Text = "Exonerado";
                        lblTitleOrdenServicio03.Text = "IGV " + decimal.Round(varObjECMP_OrdenServicio.IGV * 100, 2) + "%";
                        lblTitleOrdenServicio04.Text = "Importe Total " + varObjECMP_OrdenServicio.ObjESGC_Moneda.Simbolo;
                        strNetoText = "Importe Total";
                    }
                    txtLineas.Text     = ListECMP_OrdenServicioDetalle.Count.ToString();
                    txtGravada.Text    = decimal.Round(dmlGravada, 2).ToString("###,###,##0.#0");
                    txtImporteIGV.Text = decimal.Round(dmlImporteRetencionIGV, 2).ToString("###,###,##0.#0");
                    txtTotal.Text      = Convert.ToDouble(dmlTotal).ToString("N2");
                }
                else
                {
                    txtLineas.Text     = ("0");
                    txtGravada.Text    = ("0.00");
                    txtImporteIGV.Text = ("0.00");
                    txtTotal.Text      = ("0.00");
                }
                dgDetalleServicio.Items.Refresh();
            }
            catch (Exception) {}
        }