Esempio n. 1
0
        public static void RecalculaParc(TList_PreVenda_DT_Vencto lParc,
                                         TRegistro_PreVenda val,
                                         int index)
        {
            if (lParc != null)
            {
                if (lParc.Sum(p => p.Vl_parcela) != (val.Vl_prevenda - val.Vl_devcred))
                {
                    decimal vl_parc   = val.Vl_prevenda - val.Vl_devcred - lParc.Sum(p => p.Vl_parcela);
                    decimal nParcelas = (lParc.Count - (index + 1));
                    if (nParcelas.Equals(0))
                    {
                        nParcelas = 1;
                    }
                    vl_parc = (vl_parc / nParcelas);
                    for (int i = ++index; i < lParc.Count; i++)
                    {
                        lParc[i].Vl_parcela += vl_parc;
                    }
                    lParc[lParc.Count - 1].Vl_parcela += val.Vl_prevenda - val.Vl_devcred - lParc.Sum(p => p.Vl_parcela);

                    //Recalcular Parcelas se valor informado for maior que valor a faturar
                    decimal somaParcAnt = SomaParcelasAnt(lParc, index);
                    if ((somaParcAnt) > val.Vl_prevenda - val.Vl_devcred)
                    {
                        lParc[index - 1].Vl_parcela = (val.Vl_prevenda - val.Vl_devcred - (somaParcAnt - lParc[index - 1].Vl_parcela) - nParcelas);
                        for (int i = index; i < lParc.Count; i++)
                        {
                            lParc[i].Vl_parcela = 1;
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public static TList_PreVenda_DT_Vencto ReCalcula_VlParcela(TRegistro_PreVenda val, bool St_calcular)
        {
            //Recalcular vl.parcela quando for faturar prevenda com duplicata
            TList_PreVenda_DT_Vencto retorno = new TList_PreVenda_DT_Vencto();

            if (((val.Vl_prevenda - val.Vl_devcred) > 0) && (!string.IsNullOrEmpty(val.Cd_condPgto)) && (val.QTD_Parcelas > 0) && (St_calcular))
            {
                decimal vl_parcela = Math.Round((val.Vl_prevenda - val.Vl_devcred) / val.QTD_Parcelas, 2);
                int     cont       = 1;
                val.DT_Vencto.ForEach(p =>
                {
                    retorno.Add(new CamadaDados.Faturamento.PDV.TRegistro_PreVenda_DT_Vencto()
                    {
                        DiasVencto = p.DiasVencto,
                        Vl_parcela = vl_parcela,
                        id_parcela = cont++
                    });
                });
                if (retorno.Count > 0)
                {
                    retorno[retorno.Count - 1].Vl_parcela += val.Vl_prevenda - val.Vl_devcred - retorno.Sum(p => p.Vl_parcela);
                }
            }
            return(retorno);
        }