Example #1
0
 private static decimal CalcularCustoMPD(TList_FichaTec_MPrima val,
                                         string Dt_apontamento,
                                         decimal Qtd_batch,
                                         BancoDados.TObjetoBanco banco)
 {
     val.ForEach(p =>
     {
         if (p.Id_formulacao_mprima != null)
         {
             //Buscar lista de materia-prima
             TList_FichaTec_MPrima lMPrima = TCN_FichaTec_MPrima.Buscar(p.Cd_empresa,
                                                                        p.Id_formulacao_mprimastr,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        0,
                                                                        string.Empty,
                                                                        banco);
             //Chamar o metodo CalcularCustoMPD recursivamente
             p.Vl_custo      = CalcularCustoMPD(lMPrima, Dt_apontamento, Qtd_batch, banco);
             p.Vl_customedio = Math.Round(p.Vl_custo / p.Qtd_produto / Qtd_batch, 2);
         }
         else
         {
             p.Vl_customedio = TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                              p.Cd_unid_produto,
                                                              TCN_LanEstoque.BuscarVlEstoqueUltimaCompra(p.Cd_empresa, p.Cd_produto, banco), 5, banco);
             p.Vl_custo = Math.Round(p.Vl_customedio * p.Qtd_produto * Qtd_batch, 2);
         }
     });
     return(val.Sum(p => p.Vl_custo));
 }
Example #2
0
        private void ps_fixado_total_Leave(object sender, EventArgs e)
        {
            if (!(bsItensNota.DataSource as TList_RegLanFaturamento_Item).Exists(p => p.St_processar))
            {
                if (ps_fixado_total.Value > tot_saldo_fixar.Value)
                {
                    ps_fixado_total.Value = tot_saldo_fixar.Value;
                }
            }
            else
            {
                if (ps_fixado_total.Value > (bsItensNota.DataSource as TList_RegLanFaturamento_Item).FindAll(p => p.St_processar).Sum(p => p.Saldo_fixar))
                {
                    ps_fixado_total.Value = (bsItensNota.DataSource as TList_RegLanFaturamento_Item).FindAll(p => p.St_processar).Sum(p => p.Saldo_fixar);
                }
            }

            if (bsFixacao.Current != null)
            {
                (bsFixacao.Current as TRegistro_LanFixacao).Vl_fixacao = TCN_CadConvUnidade.ConvertUnid(
                    cd_unidestoque.Text,
                    cd_unidvalorEditDefault.Text,
                    ps_fixado_total.Value * (vl_unitario.Value + vl_bonificacao.Value),
                    2, null);

                bsFixacao.ResetCurrentItem();
            }
        }
Example #3
0
        private void vl_unitario_Leave(object sender, EventArgs e)
        {
            if (bsFixacao.Current != null)
            {
                (bsFixacao.Current as TRegistro_LanFixacao).Vl_fixacao = TCN_CadConvUnidade.ConvertUnid(
                    cd_unidestoque.Text,
                    cd_unidvalorEditDefault.Text,
                    ps_fixado_total.Value * (vl_unitario.Value + vl_bonificacao.Value),
                    2, null);

                bsFixacao.ResetCurrentItem();
            }
        }
Example #4
0
 private void TFDisponibilidadeMPrima_Load(object sender, EventArgs e)
 {
     Utils.ShapeGrid.RestoreShape(this, dataGridDefault1);
     Utils.ShapeGrid.RestoreShape(this, dataGridDefault2);
     Utils.ShapeGrid.RestoreShape(this, dataGridDefault3);
     Utils.ShapeGrid.RestoreShape(this, dataGridDefault4);
     Utils.ShapeGrid.RestoreShape(this, dataGridDefault5);
     Utils.ShapeGrid.RestoreShape(this, gMPrima);
     Utils.ShapeGrid.RestoreShape(this, gSintetico);
     Icon = Utils.ResourcesUtils.TecnoAliance_ICO;
     pFiltro.set_FormatZero();
     CD_Empresa.Text    = pCd_empresa.Trim();
     id_formulacao.Text = pId_formulacao.Trim();
     ds_formula.Text    = pDs_formula.Trim();
     if (id_formulacao.Text != null)
     {
         id_formulacao_Leave(this, new EventArgs());
     }
     CD_Empresa.Enabled = string.IsNullOrEmpty(pCd_empresa);
     BB_Empresa.Enabled = string.IsNullOrEmpty(pCd_empresa);
     qtd_batch.Enabled  = string.IsNullOrWhiteSpace(pId_ordem);
     //Calcular indice de bateladas
     if (pQtd_programada > decimal.Zero)
     {
         //Buscar formula
         CamadaDados.Producao.Producao.TList_FormulaApontamento lFormula =
             CamadaNegocio.Producao.Producao.TCN_FormulaApontamento.Buscar(CD_Empresa.Text,
                                                                           id_formulacao.Text,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           string.Empty,
                                                                           1,
                                                                           string.Empty,
                                                                           null);
         if (lFormula.Count > 0)
         {
             qtd_batch.Value    = TCN_CadConvUnidade.ConvertUnid(pCd_unidade, lFormula[0].Cd_unidProduto, pQtd_programada, 3, null) / lFormula[0].Qt_produto;
             qtd_produzir.Value = lFormula[0].Qt_produto;
         }
     }
 }
Example #5
0
        public static void GravarDevAquisicao(TRegistro_DevAquisicao val,
                                              BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;

            if (banco == null)
            {
                banco = new BancoDados.TObjetoBanco();
                banco.CriarConexao(Parametros.pubLogin, Parametros.pubNM_Servidor, Parametros.pubNM_BancoDados);
                banco.CriarComando();
                banco.Conexao.Open();
                banco.Start_Tran(System.Data.IsolationLevel.ReadCommitted);
                banco.Comando.Transaction = banco.Transac;
                st_transacao = true;
            }
            try
            {
                #region Nota_Fiscal_Origem
                val.rNfOrigem.Nr_pedido            = val.Contrato_devolucao[0].Nr_pedido;
                val.rNfOrigem.Cd_clifor            = val.Contrato_Origem.Cd_clifor;
                val.rNfOrigem.Cd_cmi               = val.Contrato_Origem.Pedido_Fiscal[0].Cd_cmi;
                val.rNfOrigem.Cd_cmistring         = val.Contrato_Origem.Pedido_Fiscal[0].Cd_cmistring;;
                val.rNfOrigem.Cd_condfiscal_clifor = string.Empty;
                val.rNfOrigem.Cd_condpgto          = val.Contrato_Origem.CD_CondPGTO;
                val.rNfOrigem.Cd_empresa           = val.Contrato_Origem.Cd_empresa;
                val.rNfOrigem.Cd_endereco          = val.Contrato_Origem.Cd_endereco;
                val.rNfOrigem.Cd_modelo            = val.Contrato_Origem.Pedido_Fiscal[0].Cd_modelo;
                val.rNfOrigem.Cd_movimentacao      = val.Contrato_Origem.Pedido_Fiscal[0].Cd_movto;

                if (val.Duplicata_Origem.Count > 0)
                {
                    val.rNfOrigem.Duplicata = val.Duplicata_Origem;
                }

                //Criar itens da nota fiscal
                TRegistro_LanFaturamento_Item Reg_Itens_Nota = new TRegistro_LanFaturamento_Item();
                Reg_Itens_Nota.Cd_produto    = val.Contrato_devolucao[0].Cd_produto;
                Reg_Itens_Nota.lNfcompdev    = val.Devolucao;
                Reg_Itens_Nota.Quantidade    = val.Quantidade;
                Reg_Itens_Nota.Vl_unitario   = val.Vl_unit_origem;
                Reg_Itens_Nota.Cd_local      = val.Contrato_devolucao[0].CD_Local;
                Reg_Itens_Nota.Vl_subtotal   = val.Vl_subtotal_origem;
                Reg_Itens_Nota.Id_pedidoitem = val.Contrato_Origem.Id_pedidoitem.Value;
                Reg_Itens_Nota.Nr_pedido     = val.Contrato_Origem.Nr_pedido.Value;
                CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfOrigem.Cd_movimentacaostring,
                                                                   val.Contrato_devolucao[0].Cd_condfiscal_produto,
                                                                   val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "I" :
                                                                   val.Contrato_Origem.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim()) ? "D" : "F",
                                                                   val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                   val.Contrato_Origem.CD_UFClifor,
                                                                   val.rNfOrigem.Tp_movimento,
                                                                   val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                   val.Reg_Empresa_Origem.Cd_empresa,
                                                                   ref rCfop,
                                                                   banco))
                {
                    Reg_Itens_Nota.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "internacional" :
                                                              val.Contrato_Origem.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfOrigem.Cd_movimentacaostring + " condição fiscal do produto " + val.Contrato_devolucao[0].Cd_condfiscal_produto);
                }

                Reg_Itens_Nota.Cd_unidade = val.Contrato_Origem.Cd_unidade;
                Reg_Itens_Nota.Cd_unidEst = val.Contrato_Origem.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                string           vObsFiscal = string.Empty;
                TList_ImpostosNF lImpostos  = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Origem.Cd_empresa,
                                                                                           val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                                           val.Contrato_Origem.CD_UFClifor,
                                                                                           val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                                           val.rNfOrigem.Tp_movimento,
                                                                                           val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                                           val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                                           val.Vl_subtotal_origem,
                                                                                           val.Quantidade,
                                                                                           ref vObsFiscal,
                                                                                           val.rNfOrigem.Dt_emissao,
                                                                                           val.Reg_Produto_Origem.CD_Produto,
                                                                                           val.rNfOrigem.Tp_nota,
                                                                                           val.rNfOrigem.Nr_serie,
                                                                                           banco);
                if (lImpostos.Count > 0)
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpostos[0], Reg_Itens_Nota);
                    val.rNfOrigem.Obsfiscal += string.IsNullOrEmpty(val.rNfOrigem.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfOrigem.Nr_serie, banco))
                {
                    throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfOrigem.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Origem.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Origem.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Origem.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Origem.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Origem.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de origem
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                          val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                          val.rNfOrigem.Tp_movimento,
                                                                          val.Reg_Clifor_Origem.Tp_pessoa,
                                                                          val.Contrato_devolucao[0].CD_Empresa,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Nr_serie,
                                                                          val.Reg_Clifor_Origem.Cd_clifor,
                                                                          val.Reg_Produto_Origem.CD_Unidade,
                                                                          val.Dt_lancto,
                                                                          Reg_Itens_Nota.Quantidade,
                                                                          Reg_Itens_Nota.Vl_subtotal,
                                                                          val.rNfOrigem.Tp_nota,
                                                                          string.Empty,
                                                                          banco), Reg_Itens_Nota, val.rNfOrigem.Tp_movimento);
                //Gerar observacao para o item
                //Observação do Item com os dados das notas de origem
                string obsitem = string.Empty;
                val.Devolucao.ForEach(p =>
                {
                    obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') +
                               (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) +
                                Reg_Itens_Nota.Sigla_unidade_estoque.Trim()).FormatStringDireita(15, ' ') +
                               p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n";
                });
                Reg_Itens_Nota.Observacao_item += "NF/Serie Origem      Quantidade     Valor(R$)\r\n" + obsitem;
                //Adicionar item a nota fiscal de origem
                val.rNfOrigem.ItensNota.Add(Reg_Itens_Nota);
                //Gravar nota fiscal de origem
                TCN_LanFaturamento.GravarFaturamento(val.rNfOrigem, null, banco);
                val.Contrato_devolucao[0].NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value;
                #endregion

                #region Nota_Fiscal_Destino
                val.rNfDestino.Nr_pedido       = val.Contrato_compra[0].Nr_pedido;
                val.rNfDestino.Cd_clifor       = val.Contrato_Destino.Cd_clifor;
                val.rNfDestino.Cd_cmi          = val.Contrato_Destino.Pedido_Fiscal[0].Cd_cmi;
                val.rNfDestino.Cd_cmistring    = val.Contrato_Destino.Pedido_Fiscal[0].Cd_cmistring;;
                val.rNfDestino.Cd_condpgto     = val.Contrato_Destino.CD_CondPGTO;
                val.rNfDestino.Cd_empresa      = val.Contrato_Destino.Cd_empresa;
                val.rNfDestino.Cd_endereco     = val.Contrato_Destino.Cd_endereco;
                val.rNfDestino.Cd_modelo       = val.Contrato_Destino.Pedido_Fiscal[0].Cd_modelo;
                val.rNfDestino.Cd_movimentacao = val.Contrato_Destino.Pedido_Fiscal[0].Cd_movto;
                if (val.Duplicata_Destino.Count > 0)
                {
                    val.rNfDestino.Duplicata = val.Duplicata_Destino;
                }

                //Registro item da nota fiscal de destino
                TRegistro_LanFaturamento_Item Reg_Itens_Nota_Destino = new TRegistro_LanFaturamento_Item();
                if (val.Contrato_compra[0].CD_Unidade_Est.Equals(val.Contrato_devolucao[0].CD_Unidade_Est))
                {
                    Reg_Itens_Nota_Destino.Quantidade = val.Quantidade;
                }
                else
                {
                    Reg_Itens_Nota_Destino.Quantidade = TCN_CadConvUnidade.ConvertUnid(val.Contrato_compra[0].CD_Unidade_Est, val.Contrato_devolucao[0].CD_Unidade_Est, val.Quantidade, 3, banco);
                }
                Reg_Itens_Nota_Destino.Cd_produto    = val.Contrato_compra[0].Cd_produto;
                Reg_Itens_Nota_Destino.Vl_unitario   = val.Vl_unit_destino;
                Reg_Itens_Nota_Destino.Cd_local      = val.Contrato_compra[0].CD_Local;
                Reg_Itens_Nota_Destino.Vl_subtotal   = val.Vl_subtotal_destino;
                Reg_Itens_Nota_Destino.Id_pedidoitem = val.Contrato_Destino.Id_pedidoitem;
                Reg_Itens_Nota_Destino.Nr_pedido     = val.Contrato_Destino.Nr_pedido.Value;
                rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfDestino.Cd_movimentacaostring,
                                                                   val.Contrato_compra[0].Cd_condfiscal_produto,
                                                                   val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "I":
                                                                   val.Contrato_Destino.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim()) ? "D" : "F",
                                                                   val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                                                   val.Contrato_Destino.CD_UFClifor,
                                                                   val.rNfDestino.Tp_movimento,
                                                                   val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                   val.Reg_Empresa_Destino.Cd_empresa,
                                                                   ref rCfop,
                                                                   banco))
                {
                    Reg_Itens_Nota_Destino.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota_Destino.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota_Destino.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Contrato_Destino.CD_UFClifor.Trim().Equals(val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfDestino.Cd_movimentacaostring + " condição fiscal do produto " + val.Contrato_compra[0].Cd_condfiscal_produto);
                }
                Reg_Itens_Nota_Destino.Cd_unidade = val.Contrato_Destino.Cd_unidade;
                Reg_Itens_Nota_Destino.Cd_unidEst = val.Contrato_Destino.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                vObsFiscal = string.Empty;
                TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Destino.Cd_empresa,
                                                                                       val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                                                                       val.Contrato_Destino.CD_UFClifor,
                                                                                       val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                                       val.rNfDestino.Tp_movimento,
                                                                                       val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                                       val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                                       val.Vl_subtotal_destino,
                                                                                       val.Quantidade,
                                                                                       ref vObsFiscal,
                                                                                       val.rNfDestino.Dt_emissao,
                                                                                       val.Reg_Produto_Destino.CD_Produto,
                                                                                       val.rNfDestino.Tp_nota,
                                                                                       val.rNfDestino.Nr_serie,
                                                                                       banco);
                if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota_Destino);
                    val.rNfDestino.Obsfiscal += string.IsNullOrEmpty(val.rNfDestino.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Nr_serie, banco))
                {
                    throw new Exception("Não existe configuração fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfDestino.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Destino.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Destino.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Destino.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Destino.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Destino.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de destino
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                          val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                          val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                          val.rNfDestino.Tp_movimento,
                                                                          val.Reg_Clifor_Destino.Tp_pessoa,
                                                                          val.Contrato_compra[0].CD_Empresa,
                                                                          val.Contrato_Destino.Pedido_Fiscal[0].Nr_serie,
                                                                          val.Reg_Clifor_Destino.Cd_clifor,
                                                                          val.Reg_Produto_Destino.CD_Unidade,
                                                                          val.Dt_lancto,
                                                                          Reg_Itens_Nota_Destino.Quantidade,
                                                                          Reg_Itens_Nota_Destino.Vl_subtotal,
                                                                          val.rNfDestino.Tp_nota,
                                                                          string.Empty,
                                                                          banco), Reg_Itens_Nota_Destino, val.rNfDestino.Tp_movimento);
                val.rNfDestino.ItensNota.Add(Reg_Itens_Nota_Destino);
                //Gravar Nota Fiscal Destino
                TCN_LanFaturamento.GravarFaturamento(val.rNfDestino, null, banco);
                val.Contrato_compra[0].NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value;
                #endregion

                if (st_transacao)
                {
                    banco.Transac.Commit();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    banco.Transac.Rollback();
                }
                throw new Exception("Erro gravar devolução/aquisição: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    if (banco.Conexao.State == System.Data.ConnectionState.Open)
                    {
                        banco.Conexao.Close();
                    }
                    banco = null;
                }
            }
        }
Example #6
0
        public static TList_Apontamento_Estoque ProcessarEstoqueFichaTec_MPrima(TList_FichaTec_MPrima val,
                                                                                decimal Qtd_batch,
                                                                                DateTime?Dt_estoque,
                                                                                bool St_decomposicao,
                                                                                BancoDados.TObjetoBanco banco)
        {
            bool st_transacao             = false;
            TCD_FichaTec_MPrima qtb_ficha = new TCD_FichaTec_MPrima();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ficha.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ficha.Banco_Dados = banco;
                }
                TList_Apontamento_Estoque lEstoque = new TList_Apontamento_Estoque();
                val.ForEach(p =>
                {
                    #region if produto composto e formula for nula
                    if ((new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoComposto(p.Cd_produto)) && (p.Id_formulacao_mprima == null))
                    {
                        TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao();
                        rApontamento.Cd_empresa          = p.Cd_empresa;
                        rApontamento.Dt_apontamento      = Dt_estoque;
                        rApontamento.Dt_validade         = Dt_estoque;
                        rApontamento.Qtd_batch           = p.Qtd_produto * Qtd_batch;
                        rApontamento.LFormulaApontamento = new TList_FormulaApontamento()
                        {
                            TCN_FormulaApontamento.CriarFormulaApontamentoProd(p.Cd_empresa,
                                                                               p.Cd_produto,
                                                                               p.Cd_unidade,
                                                                               p.Cd_local,
                                                                               //St_decomposicao,
                                                                               qtb_ficha.Banco_Dados)
                        };
                        //Gravar Formula Apontamento
                        rApontamento.LFormulaApontamento.ForEach(x =>
                        {
                            x.St_decomposicao = St_decomposicao;
                            TCN_FormulaApontamento.Gravar(x, qtb_ficha.Banco_Dados);
                        });
                        //Calcular custo MPD
                        TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados);
                        //Calcular custo fixo
                        TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados);
                        //Chamar metodo Gravar Apontamento recursivamente
                        p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento,
                                                                                                  qtb_ficha.Banco_Dados));
                    }
                    #endregion
                    #region else if formula diferente de nulll
                    else if (p.Id_formulacao_mprima != null)
                    {
                        //Buscar formula apontamento
                        TRegistro_ApontamentoProducao rApontamento = new TRegistro_ApontamentoProducao();
                        rApontamento.Cd_empresa          = p.Cd_empresa;
                        rApontamento.Dt_apontamento      = Dt_estoque;
                        rApontamento.Dt_validade         = Dt_estoque;
                        rApontamento.Qtd_batch           = p.Qtd_produto * Qtd_batch;
                        rApontamento.LFormulaApontamento = TCN_FormulaApontamento.Buscar(p.Cd_empresa,
                                                                                         p.Id_formulacao_mprimastr,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         string.Empty,
                                                                                         0,
                                                                                         string.Empty,
                                                                                         qtb_ficha.Banco_Dados);
                        //Buscar ficha tecnica da formula
                        rApontamento.LFormulaApontamento[0].LFichaTec_MPrima =
                            TCN_FichaTec_MPrima.Buscar(p.Cd_empresa,
                                                       p.Id_formulacao_mprimastr,
                                                       string.Empty,
                                                       string.Empty,
                                                       string.Empty,
                                                       0,
                                                       string.Empty,
                                                       qtb_ficha.Banco_Dados);
                        //Buscar Custo
                        rApontamento.LFormulaApontamento[0].LCustoFixo =
                            TCN_CustoFixo_Direto.Buscar(p.Cd_empresa,
                                                        p.Id_formulacao_mprimastr,
                                                        string.Empty,
                                                        string.Empty,
                                                        string.Empty,
                                                        0,
                                                        string.Empty,
                                                        qtb_ficha.Banco_Dados);

                        rApontamento.Qtd_batch = Math.Round(p.Qtd_produto / TCN_CadConvUnidade.ConvertUnid(rApontamento.LFormulaApontamento[0].Cd_unidade,
                                                                                                           rApontamento.LFormulaApontamento[0].Cd_unidProduto,
                                                                                                           rApontamento.LFormulaApontamento[0].Qt_produto,
                                                                                                           3, qtb_ficha.Banco_Dados), 0);
                        //Calcular custo MPD
                        TCN_ApontamentoProducao.CalcularCustoMPD(rApontamento, qtb_ficha.Banco_Dados);
                        //Calcular custo fixo
                        TCN_ApontamentoProducao.CalcularCustoFixo(rApontamento, qtb_ficha.Banco_Dados);
                        //Chamar metodo Gravar Apontamento recursivamente
                        p.Id_apontamentomprima = Convert.ToDecimal(TCN_ApontamentoProducao.Gravar(rApontamento,
                                                                                                  qtb_ficha.Banco_Dados));
                    }
                    #endregion

                    //Gravar estoque
                    TRegistro_LanEstoque rEstoque = new TRegistro_LanEstoque();
                    rEstoque.Cd_empresa           = p.Cd_empresa;
                    rEstoque.Cd_local             = p.Cd_local;
                    rEstoque.Cd_produto           = p.Cd_produto;
                    rEstoque.Ds_observacao        = "ESTOQUE GRAVADO AUTOMATICAMENTE PELO APONTAMENTO DE PRODUCAO";
                    rEstoque.Dt_lancto            = Dt_estoque;
                    rEstoque.Tp_movimento         = !St_decomposicao ? "S" : "E";
                    rEstoque.Qtd_entrada          = St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                                                                     p.Cd_unid_produto,
                                                                                                     p.Qtd_produto * Qtd_batch,
                                                                                                     3,
                                                                                                     qtb_ficha.Banco_Dados) : decimal.Zero;
                    rEstoque.Qtd_saida = !St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                                                           p.Cd_unid_produto,
                                                                                           p.Qtd_produto * Qtd_batch,
                                                                                           3,
                                                                                           qtb_ficha.Banco_Dados) : decimal.Zero;
                    rEstoque.Vl_unitario = p.Vl_unitario;
                    rEstoque.Vl_subtotal = rEstoque.Vl_unitario * (St_decomposicao ? rEstoque.Qtd_entrada : rEstoque.Qtd_saida);
                    rEstoque.Tp_lancto   = "N";
                    TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados);
                    lEstoque.Add(new TRegistro_Apontamento_Estoque()
                    {
                        Cd_empresa       = p.Cd_empresa,
                        Cd_produto       = p.Cd_produto,
                        Id_lanctoestoque = rEstoque.Id_lanctoestoque,
                        Vl_custocontabil = p.Vl_custo
                    });
                });
                if (st_transacao)
                {
                    qtb_ficha.Banco_Dados.Commit_Tran();
                }
                return(lEstoque);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ficha.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ficha.deletarBanco_Dados();
                }
            }
        }
Example #7
0
        public static string GravarAplicacaoPedido(string CD_Empresa,
                                                   decimal saldoAplicar,
                                                   TRegistro_LanFaturamento rNotaFiscal,
                                                   TObjetoBanco banco)
        {
            TCD_LanAplicacaoPedido qtb_aplic = new TCD_LanAplicacaoPedido();
            bool pode_liberar = false;

            try
            {
                //Start Transação
                if (banco == null)
                {
                    pode_liberar = qtb_aplic.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_aplic.Banco_Dados = banco;
                }

                //Gravar Notas Fiscais da Aplicacao
                if (rNotaFiscal == null)
                {
                    throw new Exception("Erro processar aplicação. Não existe nota para processar.");
                }

                if ((rNotaFiscal.Nr_pedido == null) || (rNotaFiscal.Nr_pedido == 0))
                {
                    throw new Exception("ERRO: Não existe pedido informado para a nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString());
                }

                rNotaFiscal.ItensNota.ForEach(p =>
                {
                    if (p.Nr_pedido.Equals(0))
                    {
                        throw new Exception("ERRO: Não existe pedido informado para o item: " + p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim() + " da nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString());
                    }

                    if ((p.Id_pedidoitem == null) || (p.Id_pedidoitem == 0))
                    {
                        throw new Exception("ERRO: Não existe item de pedido informado para o item: " + p.Cd_produto.Trim() + "-" + p.Ds_produto.Trim() + " da nota fiscal " + rNotaFiscal.Nr_notafiscal.ToString());
                    }

                    TRegistro_EntregaPedido rgent = new TRegistro_EntregaPedido()
                    {
                        Id_entrega    = null,
                        Nr_pedido     = p.Nr_pedido,
                        Cd_produto    = p.Cd_produto,
                        Id_pedidoitem = p.Id_pedidoitem,
                        Qtd_entregue  = p.Quantidade_estoque > 0 ? p.Quantidade_estoque : p.Quantidade,
                        Dt_entrega    = rNotaFiscal.Dt_saient,
                        Ds_observacao = "ENTREGA GRAVADA AUTOMATICAMENTE PELA APLICACAO"
                    };

                    rgent.Id_entregastr = TCN_LanEntregaPedido.Gravar(rgent, qtb_aplic.Banco_Dados);

                    //ADICIONAR A ENTREGA NA NOTAITEM PARA SER UTILIZADA NO PROCESSAMENTO DA NOTA
                    //QUANDO FOR APLICACAO A ENTREGA A SER CUMPRIDA OBRIGATORIAMENTE SERA A GRAVADA ACIMA E NAO OUTRAS COM SALDO DISPONIVEL
                    p.lEntrega = new TList_EntregaPedido();
                    p.lEntrega.Add(rgent);
                });

                //Grava Nota Fiscal
                //gravar taxas de deposito separado da nota
                string retorno = TCN_LanFaturamento.GravarFaturamento(rNotaFiscal, false, null, qtb_aplic.Banco_Dados);
                //Para cada item da nota fiscal, gravar um registro aplicacao
                rNotaFiscal.ItensNota.ForEach(p =>
                {
                    if (p.rEstoque == null)
                    {
                        throw new Exception("Aplicação não pode ser processada. Não foi possivel gerar estoque.");
                    }
                    p.lTicketAplicar.ForEach(v =>
                    {
                        TRegistro_LanAplicacaoPedido val = new TRegistro_LanAplicacaoPedido();
                        //Gravar Aplicação
                        val.Cd_empresa           = p.Cd_empresa;
                        val.Id_ticket            = v.Id_ticket.Value;
                        val.Tp_pesagem           = v.Tp_pesagem;
                        val.Nr_pedido            = p.Nr_pedido;
                        val.Cd_produto           = p.Cd_produto;
                        val.Id_pedidoitem        = p.Id_pedidoitem.Value;
                        val.Id_lanctoestoque     = p.rEstoque.Id_lanctoestoque;
                        val.Qtd_aplicado         = v.Ps_Aplicar;
                        val.Vl_unitario          = TCN_CadConvUnidade.ConvertUnid(v.Cd_unid_produto, v.Cd_unid_contrato, v.Vl_unit_contrato, 7, qtb_aplic.Banco_Dados);
                        val.Vl_subtotal          = Math.Round(v.Ps_Aplicar * val.Vl_unitario, 2);
                        val.Id_aplicacao         = null;
                        val.Id_autoriz           = v.Id_autoriz;
                        string retorno_aplicacao = qtb_aplic.Gravar(val);
                        retorno          = retorno + "|" + retorno_aplicacao;
                        val.Id_aplicacao = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno_aplicacao, "@P_ID_APLICACAO"));
                        //Gravar Aplicação X Nota Fiscal
                        retorno = retorno + "|" + TCN_LanAplicacao_NotaFiscal.GravarAplicacaoXNotaFiscal(
                            new TRegistro_LanAplicacao_NotaFiscal()
                        {
                            Cd_empresa      = val.Cd_empresa,
                            Id_aplicacao    = val.Id_aplicacao,
                            Id_nfitem       = p.Id_nfitem,
                            Nr_lanctofiscal = p.Nr_lanctofiscal
                        }, qtb_aplic.Banco_Dados);
                    });
                    //Gravar Movimento Deposito
                    TCN_MovDeposito.GravarMovDeposito(new TRegistro_MovDeposito()
                    {
                        Id_Movto         = 0,
                        Nr_Pedido        = p.Nr_pedido,
                        CD_Produto       = p.Cd_produto,
                        CD_Empresa       = p.Cd_empresa,
                        Id_LanctoEstoque = p.rEstoque.Id_lanctoestoque,
                        Id_pedidoitem    = p.Id_pedidoitem.Value
                    }, qtb_aplic.Banco_Dados);
                    //Gravar Pesagem GMO
                    CamadaNegocio.Graos.TCN_LanRoyaltiesGMO.GravaPesagemGMO(p, rNotaFiscal.Tp_movimento, qtb_aplic.Banco_Dados);
                    //Contrato Entrada a Fixar
                    TRegistro_CadCFGPedido rCfg = new TCD_CadCFGPedido(qtb_aplic.Banco_Dados).Select(
                        new TpBusca[]
                    {
                        new TpBusca()
                        {
                            vNM_Campo = string.Empty,
                            vOperador = "exists",
                            vVL_Busca = "(select 1 from tb_fat_pedido x " +
                                        "where x.cfg_pedido = a.cfg_pedido " +
                                        "and x.nr_pedido = " + p.Nr_pedido.ToString() + ")"
                        }
                    }, 1, string.Empty)[0];
                });
                if (pode_liberar)
                {
                    qtb_aplic.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception ex)
            {
                if (pode_liberar)
                {
                    qtb_aplic.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar aplicação: " + ex.Message.Trim());
            }
            finally
            {
                if (pode_liberar)
                {
                    qtb_aplic.deletarBanco_Dados();
                }
            }
        }
Example #8
0
        public static string Grava_Transferencia(TRegistro_Transferencia val,
                                                 TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Transferencia qtb_Transferencia = new TCD_Transferencia();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_Transferencia.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_Transferencia.Banco_Dados = banco;
                }

                // Grava Transferencia
                string retorno = qtb_Transferencia.Gravar(val);
                val.ID_Transf = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_TRANSF"));
                // Grava Transferencia Pedido Origem

                #region Nota_Fiscal_Origem
                val.rNfOrigem.Nr_pedido            = val.Transf_X_Contrato_Origem[0].Nr_pedido;
                val.rNfOrigem.Cd_clifor            = val.Contrato_Origem.Cd_clifor;
                val.rNfOrigem.Cd_condfiscal_clifor = string.Empty;
                val.rNfOrigem.Cd_condpgto          = val.Contrato_Origem.CD_CondPGTO;
                val.rNfOrigem.Cd_empresa           = val.Contrato_Origem.Cd_empresa;
                val.rNfOrigem.Cd_endereco          = val.Contrato_Origem.Cd_endereco;
                val.rNfOrigem.Cd_movimentacao      = val.Contrato_Origem.Pedido_Fiscal[0].Cd_movto;
                if (val.Duplicata_Origem.Count > 0)
                {
                    val.rNfOrigem.Duplicata = val.Duplicata_Origem;
                }

                //Criar itens da nota fiscal
                TRegistro_LanFaturamento_Item Reg_Itens_Nota = new TRegistro_LanFaturamento_Item();
                Reg_Itens_Nota.Cd_produto    = val.Transf_X_Contrato_Origem[0].Cd_produto;
                Reg_Itens_Nota.lNfcompdev    = val.Complemento_Devolucao;
                Reg_Itens_Nota.Quantidade    = val.QTD_Transf;
                Reg_Itens_Nota.Vl_unitario   = val.VL_Unit_Origem;
                Reg_Itens_Nota.Cd_local      = val.Contrato_Origem.Cd_local;
                Reg_Itens_Nota.Vl_subtotal   = val.VL_Sub_Total_Origem;
                Reg_Itens_Nota.Id_pedidoitem = val.Contrato_Origem.Id_pedidoitem;
                Reg_Itens_Nota.Nr_pedido     = val.Contrato_Origem.Nr_pedido.Value;
                CamadaDados.Fiscal.TRegistro_CadCFOP rCfop = null;
                if (CamadaNegocio.Fiscal.TCN_Mov_X_CFOP.BuscarCFOP(val.rNfOrigem.Cd_movimentacaostring,
                                                                   val.Transf_X_Contrato_Origem[0].Cd_condfiscal_produto,
                                                                   val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "I" :
                                                                   val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Origem.CD_UFClifor.Trim()) ? "D" : "F",
                                                                   val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                   val.Contrato_Origem.CD_UFClifor,
                                                                   val.rNfOrigem.Tp_movimento,
                                                                   val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                   val.Reg_Empresa_Origem.Cd_empresa,
                                                                   ref rCfop,
                                                                   banco))
                {
                    Reg_Itens_Nota.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Origem.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Reg_Empresa_Origem.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Origem.CD_UFClifor.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfOrigem.Cd_movimentacaostring + " condição fiscal do produto " + val.Transf_X_Contrato_Origem[0].Cd_condfiscal_produto);
                }
                Reg_Itens_Nota.Cd_unidade = val.Contrato_Origem.Cd_unidade;
                Reg_Itens_Nota.Cd_unidEst = val.Contrato_Origem.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                string           vObsFiscal = string.Empty;
                TList_ImpostosNF lImpUfOrig = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Origem.Cd_empresa,
                                                                                           val.Reg_Empresa_Origem.rEndereco.Cd_uf,
                                                                                           val.Contrato_Origem.CD_UFClifor,
                                                                                           val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                                           val.rNfOrigem.Tp_movimento,
                                                                                           val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                                           val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                                           val.VL_Sub_Total_Origem,
                                                                                           val.QTD_Transf,
                                                                                           ref vObsFiscal,
                                                                                           val.rNfOrigem.Dt_emissao,
                                                                                           val.Reg_Produto_Origem.CD_Produto,
                                                                                           val.rNfOrigem.Tp_nota,
                                                                                           val.rNfOrigem.Nr_serie,
                                                                                           banco);
                if (lImpUfOrig.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUfOrig.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota);
                    val.rNfOrigem.Obsfiscal += string.IsNullOrEmpty(val.rNfOrigem.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Origem.CD_Produto, val.rNfOrigem.Nr_serie, banco))
                {
                    throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfOrigem.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Origem.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Origem.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Origem.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Origem.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Origem.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de origem
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                    TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Origem.Cd_condfiscal_clifor,
                                                                          val.Reg_Produto_Origem.CD_CondFiscal_Produto,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Cd_movtostring,
                                                                          val.rNfOrigem.Tp_movimento,
                                                                          val.Reg_Clifor_Origem.Tp_pessoa,
                                                                          val.Transf_X_Contrato_Origem[0].CD_Empresa,
                                                                          val.Contrato_Origem.Pedido_Fiscal[0].Nr_serie,
                                                                          val.Reg_Clifor_Origem.Cd_clifor,
                                                                          val.Reg_Produto_Origem.CD_Unidade,
                                                                          val.DT_Lancto,
                                                                          Reg_Itens_Nota.Quantidade,
                                                                          Reg_Itens_Nota.Vl_subtotal,
                                                                          val.rNfOrigem.Tp_nota,
                                                                          string.Empty,
                                                                          banco), Reg_Itens_Nota, val.rNfOrigem.Tp_movimento);
                //Gerar observacao para o item
                //Observação do Item com os dados das notas de origem
                string obsitem = string.Empty;
                val.Complemento_Devolucao.ForEach(p =>
                {
                    obsitem += (p.Nr_notafiscal_origem.ToString() + "/" + p.Nr_serie_origem).FormatStringDireita(21, ' ') +
                               (p.Qtd_lancto.ToString("N3", new System.Globalization.CultureInfo("en-US", true)) +
                                Reg_Itens_Nota.Sigla_unidade_estoque.Trim()).FormatStringDireita(15, ' ') +
                               p.Vl_lancto.ToString("N2", new System.Globalization.CultureInfo("en-US", true)).FormatStringDireita(12, ' ') + "\r\n";
                });
                Reg_Itens_Nota.Observacao_item += "NF/Serie Origem      Quantidade     Valor(R$)\r\n" + obsitem;
                //Adicionar item a nota fiscal de origem
                val.rNfOrigem.ItensNota.Add(Reg_Itens_Nota);
                //Gravar nota fiscal de origem
                TCN_LanFaturamento.GravarFaturamento(val.rNfOrigem, null, qtb_Transferencia.Banco_Dados);
                val.Transf_X_Contrato_Origem[0].NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value;
                //Gravar transferencia x pedido origem
                TCN_Transf_X_Contrato.Gravar(new TRegistro_Transf_X_Contrato()
                {
                    CD_Empresa      = val.Transf_X_Contrato_Origem[0].CD_Empresa,
                    Cd_produto      = val.Transf_X_Contrato_Origem[0].Cd_produto,
                    ID_Transf       = val.ID_Transf,
                    TP_Movimento    = val.rNfOrigem.Tp_movimento,
                    NR_LanctoFiscal = val.rNfOrigem.Nr_lanctofiscal.Value,
                    ID_NFItem       = val.rNfOrigem.ItensNota[0].Id_nfitem,
                    NR_Contrato     = val.Contrato_Origem.Nr_contrato
                }, qtb_Transferencia.Banco_Dados);
                #endregion

                #region Nota_Fiscal_Destino
                val.rNfDestino.Nr_pedido       = val.Transf_X_Contrato_Destino[0].Nr_pedido;
                val.rNfDestino.Cd_clifor       = val.Contrato_Destino.Cd_clifor;
                val.rNfDestino.Cd_condpgto     = val.Contrato_Destino.CD_CondPGTO;
                val.rNfDestino.Cd_empresa      = val.Contrato_Destino.Cd_empresa;
                val.rNfDestino.Cd_endereco     = val.Contrato_Destino.Cd_endereco;
                val.rNfDestino.Cd_movimentacao = val.Contrato_Destino.Pedido_Fiscal[0].Cd_movto;
                if (val.Duplicata_Destino.Count > 0)
                {
                    val.rNfDestino.Duplicata = val.Duplicata_Destino;
                }

                //Registro item da nota fiscal de destino
                TRegistro_LanFaturamento_Item Reg_Itens_Nota_Destino = new TRegistro_LanFaturamento_Item();
                if (val.Transf_X_Contrato_Destino[0].CD_Unidade_Est.Equals(val.Transf_X_Contrato_Origem[0].CD_Unidade_Est))
                {
                    Reg_Itens_Nota_Destino.Quantidade = val.QTD_Transf;
                }
                else
                {
                    Reg_Itens_Nota_Destino.Quantidade = TCN_CadConvUnidade.ConvertUnid(val.Transf_X_Contrato_Destino[0].CD_Unidade_Est, val.Transf_X_Contrato_Origem[0].CD_Unidade_Est, val.QTD_Transf, 3, qtb_Transferencia.Banco_Dados);
                }

                Reg_Itens_Nota_Destino.Cd_produto    = val.Transf_X_Contrato_Destino[0].Cd_produto;
                Reg_Itens_Nota_Destino.Vl_unitario   = val.VL_Unit_Destino;
                Reg_Itens_Nota_Destino.Cd_local      = val.Contrato_Destino.Cd_local;
                Reg_Itens_Nota_Destino.Vl_subtotal   = val.VL_Sub_Total_Destino;
                Reg_Itens_Nota_Destino.Id_pedidoitem = val.Contrato_Destino.Id_pedidoitem.Value;
                Reg_Itens_Nota_Destino.Nr_pedido     = val.Contrato_Destino.Nr_pedido.Value;
                rCfop = null;
                if (TCN_Mov_X_CFOP.BuscarCFOP(val.rNfDestino.Cd_movimentacaostring,
                                              val.Transf_X_Contrato_Destino[0].Cd_condfiscal_produto,
                                              val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "I" :
                                              val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Destino.CD_UFClifor.Trim()) ? "D" : "F",
                                              val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                              val.Contrato_Destino.CD_UFClifor,
                                              val.rNfDestino.Tp_movimento,
                                              val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                              val.Reg_Empresa_Destino.Cd_empresa,
                                              ref rCfop,
                                              banco))
                {
                    Reg_Itens_Nota_Destino.Cd_cfop        = rCfop.CD_CFOP;
                    Reg_Itens_Nota_Destino.Ds_cfop        = rCfop.DS_CFOP;
                    Reg_Itens_Nota_Destino.St_bonificacao = rCfop.St_bonificacaobool;
                }
                else
                {
                    throw new Exception("Não existe CFOP " + (val.Contrato_Destino.CD_UFClifor.Trim().Equals("99") ? "internacional" : val.Reg_Empresa_Destino.rEndereco.Cd_uf.Trim().Equals(val.Contrato_Destino.CD_UFClifor.Trim()) ? "dentro estado" : "fora estado") + " configurado para a Movimentação " + val.rNfDestino.Cd_movimentacaostring + " condição fiscal do produto " + val.Transf_X_Contrato_Destino[0].Cd_condfiscal_produto);
                }
                Reg_Itens_Nota_Destino.Cd_unidade = val.Contrato_Destino.Cd_unidade;
                Reg_Itens_Nota_Destino.Cd_unidEst = val.Contrato_Destino.Cd_unid_produto;
                //Procurar Impostos Estaduais para o Item
                vObsFiscal = string.Empty;
                TList_ImpostosNF lImpUf = TCN_LanFaturamento_Item.procuraImpostosPorUf(val.Reg_Empresa_Destino.Cd_empresa,
                                                                                       val.Reg_Empresa_Destino.rEndereco.Cd_uf,
                                                                                       val.Contrato_Destino.CD_UFClifor,
                                                                                       val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                                       val.rNfDestino.Tp_movimento,
                                                                                       val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                                       val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                                       val.VL_Sub_Total_Destino,
                                                                                       val.QTD_Transf,
                                                                                       ref vObsFiscal,
                                                                                       val.rNfDestino.Dt_emissao,
                                                                                       val.Reg_Produto_Destino.CD_Produto,
                                                                                       val.rNfDestino.Tp_nota,
                                                                                       val.rNfDestino.Nr_serie,
                                                                                       banco);
                if (lImpUf.Exists(v => v.Imposto.St_ICMS))
                {
                    TCN_LanFaturamento_Item.PreencherICMS(lImpUf.Find(v => v.Imposto.St_ICMS), Reg_Itens_Nota_Destino);
                    val.rNfDestino.Obsfiscal += string.IsNullOrEmpty(val.rNfDestino.Obsfiscal) ? vObsFiscal.Trim() : "\r\n" + vObsFiscal.Trim();
                }
                else if (TCN_LanFaturamento_Item.ObrigImformarICMS(val.Reg_Produto_Destino.CD_Produto, val.rNfDestino.Nr_serie, banco))
                {
                    throw new Exception("Não existe condição fiscal para o imposto ICMS: \r\n" +
                                        "Tipo Movimento: " + (val.rNfDestino.Tp_movimento.Trim().ToUpper().Equals("E") ? "ENTRADA" : "SAIDA") + "\r\n" +
                                        "Movimentação Comercial: " + val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring + " - " + val.Contrato_Destino.Pedido_Fiscal[0].Ds_movimentacao + "\r\n" +
                                        "Condição Fiscal Clifor: " + val.Reg_Clifor_Destino.Cd_condfiscal_clifor + "\r\n" +
                                        "Condição Fiscal Produto: " + val.Reg_Produto_Destino.CD_CondFiscal_Produto + "\r\n" +
                                        "UF Origem: " + val.Reg_Empresa_Destino.rEndereco.Cd_uf + "\r\n" +
                                        "UF Destino: " + val.Contrato_Destino.CD_UFClifor);
                }

                //Procurar impostos sobre os itens da nota fiscal de destino
                TCN_LanFaturamento_Item.PreencherOutrosImpostos(TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(val.Reg_Clifor_Destino.Cd_condfiscal_clifor,
                                                                                                                      val.Reg_Produto_Destino.CD_CondFiscal_Produto,
                                                                                                                      val.Contrato_Destino.Pedido_Fiscal[0].Cd_movtostring,
                                                                                                                      val.rNfDestino.Tp_movimento,
                                                                                                                      val.Reg_Clifor_Destino.Tp_pessoa,
                                                                                                                      val.Transf_X_Contrato_Destino[0].CD_Empresa,
                                                                                                                      val.Contrato_Destino.Pedido_Fiscal[0].Nr_serie,
                                                                                                                      val.Reg_Clifor_Destino.Cd_clifor,
                                                                                                                      val.Reg_Produto_Destino.CD_Unidade,
                                                                                                                      val.DT_Lancto,
                                                                                                                      Reg_Itens_Nota_Destino.Quantidade,
                                                                                                                      Reg_Itens_Nota_Destino.Vl_subtotal,
                                                                                                                      val.rNfDestino.Tp_nota,
                                                                                                                      string.Empty,
                                                                                                                      banco), Reg_Itens_Nota_Destino, val.rNfDestino.Tp_movimento);
                val.rNfDestino.ItensNota.Add(Reg_Itens_Nota_Destino);
                //Gravar Nota Fiscal Destino
                TCN_LanFaturamento.GravarFaturamento(val.rNfDestino, null, qtb_Transferencia.Banco_Dados);
                val.Transf_X_Contrato_Destino[0].NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value;

                TCN_Transf_X_Contrato.Gravar(new TRegistro_Transf_X_Contrato()
                {
                    CD_Empresa      = val.Transf_X_Contrato_Destino[0].CD_Empresa,
                    Cd_produto      = val.Transf_X_Contrato_Destino[0].Cd_produto,
                    ID_Transf       = val.ID_Transf,
                    TP_Movimento    = val.rNfDestino.Tp_movimento,
                    NR_LanctoFiscal = val.rNfDestino.Nr_lanctofiscal.Value,
                    ID_NFItem       = val.rNfDestino.ItensNota[0].Id_nfitem,
                    NR_Contrato     = val.Transf_X_Contrato_Destino[0].NR_Contrato
                }, qtb_Transferencia.Banco_Dados);

                #endregion

                if (st_transacao)
                {
                    qtb_Transferencia.Banco_Dados.Commit_Tran();
                }

                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_Transferencia.Banco_Dados.RollBack_Tran();
                }

                throw new Exception(ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_Transferencia.deletarBanco_Dados();
                }
            }
        }
Example #9
0
        public static TList_TaxaDeposito CalcularTaxasExpedicaoPendentes(string Cd_empresa,
                                                                         string Nr_contrato,
                                                                         string Cd_produto,
                                                                         DateTime Dt_calctaxa,
                                                                         string Id_taxa)
        {
            //Buscar lista de taxas de expedicao configurada para o contrato
            TList_CadContratoTaxaDeposito lTaxasContrato = new TCD_CadContratoTaxaDeposito().Select(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.nr_contrato",
                    vOperador = "=",
                    vVL_Busca = Nr_contrato
                },
                new TpBusca()
                {
                    vNM_Campo = "a.st_gerartxsomente",
                    vOperador = "=",
                    vVL_Busca = "'E'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.id_taxa",
                    vOperador = "=",
                    vVL_Busca = string.IsNullOrEmpty(Id_taxa) ? "a.id_taxa" : Id_taxa
                }
            }, 0, string.Empty);
            TList_TaxaDeposito lTaxaDeposito = new TList_TaxaDeposito();

            lTaxasContrato.ForEach(p =>
            {
                //Para cada taxa buscar saldo carencia
                List <TRegistro_ViewSaldoCarencia> SaldoCarencia =
                    new TCD_SaldoCarenciaTaxa().BuscarSaldoCarencia(Cd_empresa,
                                                                    p.Id_taxastr,
                                                                    p.Nr_contratostr,
                                                                    Cd_produto);
                decimal tmpTotDiasExpirado = decimal.Zero;
                SaldoCarencia.ForEach(v =>
                {
                    tmpTotDiasExpirado = Dt_calctaxa.Subtract(v.DT_Saldo.Date).Subtract(TimeSpan.FromDays(Convert.ToDouble(p.Periodocarencia.ToString()))).Days;
                    if (tmpTotDiasExpirado > 0)
                    {
                        //Buscar unidade do estoque
                        object obj = new CamadaDados.Estoque.Cadastros.TCD_CadProduto().BuscarEscalar(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = "a.cd_produto",
                                vOperador = "=",
                                vVL_Busca = "'" + Cd_produto.Trim() + "'"
                            }
                        }, "a.cd_unidade");
                        if (obj == null)
                        {
                            throw new Exception("Produto " + Cd_produto.Trim() + " sem unidade cadastrada.");
                        }
                        decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(obj.ToString(), p.Cd_unidadetaxa, v.Tot_Saldo, 3, null);
                        decimal m = ((tmpTotDiasExpirado % p.Frequencia) > 0 ? 1 : 0);
                        decimal t = (Math.Floor(tmpTotDiasExpirado / p.Frequencia) + m);
                        decimal k = (p.Frequencia > 0 ? t : 1);

                        lTaxaDeposito.Add(new TRegistro_TaxaDeposito()
                        {
                            Id_LanTaxa    = 0,
                            Nr_Contrato   = p.Nr_contrato.Value,
                            Cd_produto    = Cd_produto,
                            Id_Reg        = p.Id_reg,
                            Id_Taxa       = p.Id_taxa.Value,
                            Ds_taxa       = p.Ds_taxa,
                            Sigla_produto = p.Sg_unidadetaxa,
                            DT_Lancto     = v.DT_Saldo,
                            Ps_Taxa       = (p.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(v.Tot_Saldo * p.Valortaxa * k / 100, 0) : 0),
                            Vl_Taxa       = (p.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * p.Valortaxa * k : 0),
                            Tp_Lancto     = "A",
                            D_c           = "D"
                        });
                    }
                });
            });
            List <TRegistro_TaxaDeposito> lTaxa = lTaxaDeposito.OrderBy(p => p.DT_Lancto).ToList();

            lTaxaDeposito.Clear();
            lTaxa.ForEach(p => lTaxaDeposito.Add(p));
            return(lTaxaDeposito);
        }
Example #10
0
        private static void CalcularTaxasExpedicao(TRegistro_EstDeposito rEstDeposito,
                                                   TRegistro_CadContratoTaxaDeposito rTaxa,
                                                   TRegistro_CadContrato vContrato,
                                                   TRegistro_MovDeposito vMovDep,
                                                   TList_SaldoCarenciaTaxa lSaldoCarencia,
                                                   TObjetoBanco banco)
        {
            decimal?vID_LanTaxa = null;
            List <TRegistro_ViewSaldoCarencia> SaldoCarencia =
                new TCD_SaldoCarenciaTaxa(banco).BuscarSaldoCarencia(vMovDep.CD_Empresa,
                                                                     rTaxa.Id_taxastr,
                                                                     rTaxa.Nr_contratostr,
                                                                     vMovDep.CD_Produto);

            decimal tmpSaldoExp        = rEstDeposito.QTD_Saida;
            decimal tmpSaldoLan        = decimal.Zero;
            decimal tmpTotDiasExpirado = decimal.Zero;

            foreach (TRegistro_ViewSaldoCarencia rSaldoCarencia in SaldoCarencia)
            {
                if (tmpSaldoExp > 0)
                {
                    if (rSaldoCarencia.Tot_Saldo >= tmpSaldoExp)
                    {
                        tmpSaldoLan = tmpSaldoExp;
                    }
                    else
                    {
                        tmpSaldoLan = rSaldoCarencia.Tot_Saldo;
                    }
                    tmpTotDiasExpirado = rEstDeposito.DT_Lancto.Subtract(rSaldoCarencia.DT_Saldo.Date).Subtract(TimeSpan.FromDays(Convert.ToDouble(rTaxa.Periodocarencia.ToString()))).Days;

                    decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(rEstDeposito.CD_Unidade, rTaxa.Cd_unidadetaxa, tmpSaldoLan, 3, banco);
                    if ((tmpTotDiasExpirado > 0) && (rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper()))
                    {
                        decimal m = ((tmpTotDiasExpirado % rTaxa.Frequencia) > 0 ? 1 : 0);
                        decimal t = (Math.Floor(tmpTotDiasExpirado / rTaxa.Frequencia) + m);
                        decimal k = (rTaxa.Frequencia > 0 ? t : 1);

                        vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(
                                                            TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito()
                        {
                            Cd_empresa  = rEstDeposito.CD_Empresa,
                            Id_ticket   = rEstDeposito.ID_Ticket,
                            Tp_pesagem  = rEstDeposito.Tp_Pesagem,
                            Id_LanTaxa  = 0,
                            Nr_Contrato = rTaxa.Nr_contrato.Value,
                            Cd_produto  = vContrato.Cd_produto,
                            Id_Reg      = rTaxa.Id_reg,
                            Id_Taxa     = rTaxa.Id_taxa.Value,
                            DT_Lancto   = rEstDeposito.DT_Lancto,
                            Ps_Taxa     = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(tmpSaldoLan * rTaxa.Valortaxa * k / 100, 0) : 0),
                            Vl_Taxa     = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa * k : 0),
                            Tp_Lancto   = "A",
                            D_c         = "D"
                        }, banco), "@P_ID_LANTAXA"));
                    }
                    //Controlar saldo
                    tmpSaldoExp -= tmpSaldoLan;
                    rSaldoCarencia.Tot_Saldo -= tmpSaldoLan;
                    lSaldoCarencia.Add(new TRegistro_SaldoCarenciaTaxa()
                    {
                        Id_Taxa     = rTaxa.Id_taxa.Value,
                        Id_Movto    = vMovDep.Id_Movto,
                        Id_LanTaxa  = vID_LanTaxa,
                        QTD_Lancto  = tmpSaldoLan,
                        DT_Saldo    = rSaldoCarencia.DT_Saldo,
                        ST_Carencia = "N"
                    });
                    vID_LanTaxa = null;
                }
                else
                {
                    break;
                }
            }
        }
Example #11
0
        private static void CalcularTaxasEntrada(TRegistro_EstDeposito rEstDeposito,
                                                 TRegistro_CadContratoTaxaDeposito rTaxa,
                                                 TRegistro_CadContrato vContrato,
                                                 TRegistro_MovDeposito vMovDep,
                                                 TList_SaldoCarenciaTaxa lSaldoCarencia,
                                                 TObjetoBanco banco)
        {
            //Converter quantidade que esta entradando para unidade da taxa
            decimal QTD_Convertida = TCN_CadConvUnidade.ConvertUnid(rEstDeposito.CD_Unidade, rTaxa.Cd_unidadetaxa, rEstDeposito.QTD_Entrada, 3, banco);
            decimal?vID_LanTaxa    = null;

            //se for uma taxa que somente sera cobrada com classificacao limitada por faixa
            if (!string.IsNullOrEmpty(rTaxa.Cd_tipoamostra))
            {
                //se for um lancto por balanca/aplicacao testar os limites de classificacao para taxar ou nao
                if ((rEstDeposito.ID_Ticket > 0) && (!string.IsNullOrEmpty(rEstDeposito.CD_Empresa)))
                {
                    rEstDeposito.Classif.ForEach(x =>
                    {
                        if (rTaxa.Cd_tipoamostra.Trim().Equals(x.Cd_tipoamostra))
                        {
                            if ((x.Pc_resultado_local >= rTaxa.Pc_result_maiorque) && (x.Pc_resultado_local <= rTaxa.Pc_result_menorque))
                            {
                                if ((rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper()))
                                {
                                    vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(
                                                                        TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito()
                                    {
                                        Cd_empresa  = rEstDeposito.CD_Empresa,
                                        Id_ticket   = rEstDeposito.ID_Ticket,
                                        Tp_pesagem  = rEstDeposito.Tp_Pesagem,
                                        Id_LanTaxa  = decimal.Zero,
                                        Nr_Contrato = rTaxa.Nr_contrato.Value,
                                        Cd_produto  = vContrato.Cd_produto,
                                        Id_Reg      = rTaxa.Id_reg,
                                        Id_Taxa     = rTaxa.Id_taxa.Value,
                                        DT_Lancto   = rEstDeposito.DT_Lancto,
                                        Ps_Taxa     = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(QTD_Convertida * rTaxa.Valortaxa / 100, 0) : 0),
                                        Vl_Taxa     = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa : 0),
                                        Tp_Lancto   = "A",
                                        D_c         = "D"
                                    }, banco), "@P_ID_LANTAXA"));
                                }
                            }
                        }
                    });
                }
            }
            else
            {
                if ((rTaxa.St_gerartxsomente.Trim().ToUpper().Equals("R") ? "E" : "S").Equals(rEstDeposito.Tp_Movimento.Trim().ToUpper()))
                {
                    vID_LanTaxa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(
                                                        TCN_LanTaxas_Deposito.Gravar(new TRegistro_TaxaDeposito()
                    {
                        Cd_empresa  = rEstDeposito.CD_Empresa,
                        Id_ticket   = rEstDeposito.ID_Ticket,
                        Tp_pesagem  = rEstDeposito.Tp_Pesagem,
                        Id_LanTaxa  = 0,
                        Nr_Contrato = rTaxa.Nr_contrato.Value,
                        Cd_produto  = vContrato.Cd_produto,
                        Id_Reg      = rTaxa.Id_reg,
                        Id_Taxa     = rTaxa.Id_taxa.Value,
                        DT_Lancto   = rEstDeposito.DT_Lancto,
                        Ps_Taxa     = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("P") ? Math.Round(QTD_Convertida * rTaxa.Valortaxa / 100, 0) : 0),
                        Vl_Taxa     = (rTaxa.Tp_taxa.Trim().ToUpper().Equals("V") ? QTD_Convertida * rTaxa.Valortaxa : 0),
                        Tp_Lancto   = "A",
                        D_c         = "D"
                    }, banco), "@P_ID_LANTAXA"));
                }
            }
            if (!lSaldoCarencia.Exists(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto)))
            {
                lSaldoCarencia.Add(new TRegistro_SaldoCarenciaTaxa()
                {
                    Id_Taxa     = rTaxa.Id_taxa.Value,
                    Id_Movto    = vMovDep.Id_Movto,
                    Id_LanTaxa  = vID_LanTaxa,
                    QTD_Lancto  = rEstDeposito.QTD_Entrada,
                    DT_Saldo    = rEstDeposito.DT_Lancto,
                    ST_Carencia = "N"
                });
            }
            else if (vID_LanTaxa != null)
            {
                if (lSaldoCarencia.Exists(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto) && (q.Id_LanTaxa == null)))
                {
                    lSaldoCarencia.Find(q => q.Id_Taxa.Equals(rTaxa.Id_taxa.Value) && q.Id_Movto.Equals(vMovDep.Id_Movto) && (q.Id_LanTaxa == null)).Id_LanTaxa = vID_LanTaxa;
                }
            }
        }
Example #12
0
        public static List <TRegistro_SaldoContratoGMO> processaFinanceiroGMO(string Nr_contrato,
                                                                              decimal id_LanctoGmo,
                                                                              TObjetoBanco banco)
        {
            //Buscar saldo pedido GMO
            List <TRegistro_SaldoContratoGMO> lSaldoContrato =
                new TCD_LanRoyaltiesGMO(banco).SelectSaldoContratoGMO(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "p.nr_contrato",
                    vOperador = "=",
                    vVL_Busca = Nr_contrato
                }
            }, 0);
            //Buscar Saldo NF GMO
            List <TRegistro_SaldoNFGMO> lSaldoNf =
                new TCD_LanRoyaltiesGMO(banco).SelectSaldoNFGMO(
                    new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "contrato.nr_contrato",
                    vOperador = "=",
                    vVL_Busca = Nr_contrato
                }
            }, 0);

            decimal pc_gmo_declarado = ConfigGer.TCN_CadParamGer.BuscaVlNumerico("PC_GMO_DECLARADO", banco);
            decimal pc_gmo_testado   = ConfigGer.TCN_CadParamGer.BuscaVlNumerico("PC_GMO_TESTADO", banco);

            TList_RegLanLiquidacao liq = new TList_RegLanLiquidacao();

            //credito/debito de todas as notas fiscais do pedido
            lSaldoContrato.ForEach(p =>
            {
                if ((p.Saldo_debito - p.Saldo_credito) > 0)
                {
                    //Credito/Debito da nota fiscal atual
                    lSaldoNf.ForEach(v =>
                    {
                        if ((v.Saldo_debito - v.Saldo_credito) > 0)
                        {
                            if (v.Tp_gmo.Trim().ToUpper().Equals("D") && pc_gmo_declarado.Equals(decimal.Zero))
                            {
                                throw new Exception("Não existe configuração percentual de GMO declarado configurado.\r\n" +
                                                    "Va em PARAMETROS->CONFIGURAÇÕES->CONFIGURAÇÕES GERAIS  e configure o percentual GMO declarado.");
                            }
                            if (v.Tp_gmo.Trim().ToUpper().Equals("T") && pc_gmo_testado.Equals(decimal.Zero))
                            {
                                throw new Exception("Não existe configuração percentual de GMO testado configurado.\r\n" +
                                                    "Va em PARAMETROS->CONFIGURAÇÕES->CONFIGURAÇÕES GERAIS  e configure o percentual GMO testado.");
                            }
                            decimal qtd_lancto = decimal.Zero;
                            if ((p.Saldo_debito - p.Saldo_credito) >= (v.Saldo_debito - v.Saldo_credito))
                            {
                                qtd_lancto = v.Saldo_debito - v.Saldo_credito;
                            }
                            else
                            {
                                qtd_lancto = p.Saldo_debito - p.Saldo_credito;
                            }
                            //Calcular impostos Retidos da Nota
                            TList_RegLanFaturamento lNf =
                                TCN_LanFaturamento.Busca(v.Cd_empresa,
                                                         string.Empty,
                                                         string.Empty,
                                                         v.Nr_lanctofiscal.ToString(),
                                                         string.Empty,
                                                         string.Empty,
                                                         decimal.Zero,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         false,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         decimal.Zero,
                                                         decimal.Zero,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         false,
                                                         string.Empty,
                                                         string.Empty,
                                                         string.Empty,
                                                         1,
                                                         string.Empty,
                                                         banco);
                            decimal vl_liquidar = decimal.Zero;
                            if (lNf.Count > 0)
                            {
                                //Buscar Item da Nota
                                TList_RegLanFaturamento_Item lItem =
                                    TCN_LanFaturamento_Item.Busca(v.Cd_empresa,
                                                                  v.Nr_lanctofiscal.Value.ToString(),
                                                                  v.Id_nfitem.Value.ToString(),
                                                                  banco);
                                if (lItem.Count > 0)
                                {
                                    //Calcular Impostos Retidos
                                    TCN_LanFaturamento_Item.PreencherOutrosImpostos(
                                        TCN_LanFaturamento_Item.procuraCondicaoFiscalImpostos(lNf[0].Cd_condfiscal_clifor,
                                                                                              lItem[0].Cd_condfiscal_produto,
                                                                                              lNf[0].Cd_movimentacaostring,
                                                                                              lNf[0].Tp_movimento,
                                                                                              lNf[0].Tp_pessoa,
                                                                                              lNf[0].Cd_empresa,
                                                                                              lNf[0].Nr_serie,
                                                                                              lNf[0].Cd_clifor,
                                                                                              lItem[0].Cd_unidEst,
                                                                                              lNf[0].Dt_emissao,
                                                                                              qtd_lancto,
                                                                                              TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                                                                                             p.Cd_unidade_valor,
                                                                                                                             (qtd_lancto * v.Vl_unitario),
                                                                                                                             2,
                                                                                                                             banco),
                                                                                              lNf[0].Tp_nota,
                                                                                              lNf[0].Cd_municipioexecservico,
                                                                                              banco), lItem[0], lNf[0].Tp_movimento);
                                    lNf[0].ItensNota = lItem;
                                }
                                TCN_LanFaturamento.CalcTotalNota(lNf[0]);
                                vl_liquidar = lNf[0].Vl_totalnota * ((v.Tp_gmo.Trim().ToUpper().Equals("D") ? pc_gmo_declarado : pc_gmo_testado) / 100);
                            }
                            else
                            {
                                //Valor liquidar
                                vl_liquidar = TCN_CadConvUnidade.ConvertUnid(p.Cd_unidade,
                                                                             p.Cd_unidade_valor,
                                                                             (qtd_lancto * v.Vl_unitario),
                                                                             2,
                                                                             banco) *
                                              ((v.Tp_gmo.Trim().ToUpper().Equals("D") ? pc_gmo_declarado : pc_gmo_testado) / 100);
                            }
                            //Liquidar duplicata
                            liquidaDuplicatas(v,
                                              p,
                                              vl_liquidar,
                                              qtd_lancto,
                                              banco);
                        }
                    });
                }
            });

            return(lSaldoContrato);
        }
Example #13
0
 public static TRegistro_LanFaturamento ProcessarAplicPsDiversos(List <TRegistro_PesagemDiversas> lTicket)
 {
     if (lTicket.Count > 0)
     {
         using (TFPedidoPsDiversa fPed = new TFPedidoPsDiversa())
         {
             fPed.pTp_movimento = lTicket[0].Tp_movimento;
             fPed.pCd_empresa   = lTicket[0].Cd_empresa;
             fPed.pNm_empresa   = lTicket[0].Nm_empresa;
             fPed.pCd_clifor    = lTicket[0].Cd_clifor;
             fPed.pNm_clifor    = lTicket[0].Nm_clifor;
             fPed.pCd_produto   = lTicket[0].Cd_produto;
             fPed.pDs_produto   = lTicket[0].Ds_produto;
             fPed.pCd_unidade   = lTicket[0].Cd_unidade;
             fPed.pSg_produto   = lTicket[0].Sg_produto;
             string und_balanca = CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_String_Empresa("UND_BALANCA", lTicket[0].Cd_empresa);
             if (!string.IsNullOrEmpty(und_balanca))
             {
                 fPed.pQuantidade = TCN_CadConvUnidade.ConvertUnid(und_balanca, lTicket[0].Cd_unidade, lTicket.Sum(p => p.Ps_liquidobruto), 3, null);
             }
             else
             {
                 fPed.pQuantidade = lTicket.Sum(p => p.Ps_liquidobruto);
             }
             if (fPed.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 CamadaDados.Faturamento.Pedido.TRegistro_Pedido rPed = new CamadaDados.Faturamento.Pedido.TRegistro_Pedido();
                 try
                 {
                     rPed.TP_Movimento = lTicket[0].Tp_movimento;
                     rPed.CD_Empresa   = fPed.pCd_empresa;
                     rPed.CFG_Pedido   = fPed.cfg_pedido;
                     rPed.CD_Clifor    = fPed.pCd_clifor;
                     rPed.CD_Endereco  = fPed.cd_endereco;
                     rPed.DT_Pedido    = CamadaDados.UtilData.Data_Servidor();
                     rPed.Pedido_Itens.Add(new CamadaDados.Faturamento.Pedido.TRegistro_LanPedido_Item()
                     {
                         Cd_produto       = fPed.pCd_produto,
                         Cd_unidade_valor = fPed.cd_unidade,
                         Cd_local         = fPed.cd_local,
                         Quantidade       = fPed.quantidade,
                         Vl_unitario      = fPed.vl_unitario,
                         Vl_subtotal      = fPed.vl_subtotal
                     });
                     CamadaNegocio.Faturamento.Pedido.TCN_Pedido.Grava_Pedido(rPed, null);
                     //Buscar pedido
                     rPed = TCN_Pedido.Busca_Registro_Pedido(rPed.Nr_pedido.ToString(), null);
                     //Buscar itens pedido
                     TCN_Pedido.Busca_Pedido_Itens(rPed, false, null);
                     TRegistro_LanFaturamento rNota = Proc_Commoditties.TProcessaPedFaturar.ProcessaPedFaturar(rPed, false, decimal.Zero);
                     rNota.Placaveiculo         = lTicket[0].Placacarreta;
                     rNota.Pesobruto            = lTicket.Sum(p => p.Ps_bruto);
                     rNota.Pesoliquido          = lTicket.Sum(p => p.Ps_liquidobruto);
                     rNota.Cd_transportadora    = lTicket[0].Cd_transp;
                     rNota.Nm_razaosocialtransp = lTicket[0].Nm_transp;
                     return(rNota);
                 }
                 catch (Exception ex)
                 {
                     TCN_Pedido.Deleta_Pedido(rPed, null);
                     throw new Exception(ex.Message.Trim());
                 }
             }
             else
             {
                 return(null);
             }
         }
     }
     else
     {
         return(null);
     }
 }
Example #14
0
        public static void ProcessarEstoqueProdutoAcabado(TRegistro_ApontamentoProducao val,
                                                          decimal Qtd_batch,
                                                          decimal TotalCusto,
                                                          BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_ApontamentoProducao qtb_ficha = new TCD_ApontamentoProducao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_ficha.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_ficha.Banco_Dados = banco;
                }
                if ((!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ItemServico(val.LFormulaApontamento[0].Cd_produto)) &&
                    (!new CamadaDados.Estoque.Cadastros.TCD_CadProduto(qtb_ficha.Banco_Dados).ProdutoConsumoInterno(val.LFormulaApontamento[0].Cd_produto)))
                {
                    //Entrada produto acabado no estoque
                    CamadaDados.Estoque.TRegistro_LanEstoque rEstoque = new CamadaDados.Estoque.TRegistro_LanEstoque();
                    rEstoque.Cd_empresa    = val.Cd_empresa;
                    rEstoque.Cd_local      = val.LFormulaApontamento[0].Cd_local;
                    rEstoque.Cd_produto    = val.LFormulaApontamento[0].Cd_produto;
                    rEstoque.Ds_observacao = "ESTOQUE GRAVADO AUTOMATICAMENTE PELA PRODUCAO DO ITEM: " + val.LFormulaApontamento[0].Cd_produto.Trim();
                    rEstoque.Dt_lancto     = val.Dt_apontamento;
                    rEstoque.Qtd_entrada   = !val.LFormulaApontamento[0].St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(val.LFormulaApontamento[0].Cd_unidade,
                                                                                                                          val.LFormulaApontamento[0].Cd_unidProduto,
                                                                                                                          val.Qtd_batch * val.LFormulaApontamento[0].Qt_produto,
                                                                                                                          3,
                                                                                                                          qtb_ficha.Banco_Dados) : decimal.Zero;
                    rEstoque.Qtd_saida = val.LFormulaApontamento[0].St_decomposicao ? TCN_CadConvUnidade.ConvertUnid(val.LFormulaApontamento[0].Cd_unidade,
                                                                                                                     val.LFormulaApontamento[0].Cd_unidProduto,
                                                                                                                     val.Qtd_batch * val.LFormulaApontamento[0].Qt_produto,
                                                                                                                     3,
                                                                                                                     qtb_ficha.Banco_Dados) : decimal.Zero;
                    rEstoque.Tp_lancto    = "N";
                    rEstoque.Tp_movimento = !val.LFormulaApontamento[0].St_decomposicao ? "E" : "S";
                    rEstoque.Vl_subtotal  = TotalCusto;
                    rEstoque.Vl_unitario  = rEstoque.Vl_subtotal > 0?(rEstoque.Vl_subtotal / (val.LFormulaApontamento[0].St_decomposicao ? rEstoque.Qtd_saida : rEstoque.Qtd_entrada)):0;
                    string ret_estoque = TCN_LanEstoque.GravarEstoque(rEstoque, qtb_ficha.Banco_Dados);
                    val.LApontamentoEstoque.Add(new TRegistro_Apontamento_Estoque()
                    {
                        Cd_empresa       = val.Cd_empresa,
                        Cd_produto       = val.LFormulaApontamento[0].Cd_produto,
                        Id_lanctoestoque = rEstoque.Id_lanctoestoque,
                        Vl_custocontabil = rEstoque.Vl_subtotal
                    });
                }
                if (st_transacao)
                {
                    qtb_ficha.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_ficha.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_ficha.deletarBanco_Dados();
                }
            }
        }
Example #15
0
 private void afterGrava()
 {
     if (bsFixacao.Current != null)
     {
         if (pCentral.validarCampoObrigatorio())
         {
             //Montar lista de notas fiscais a serem complementadas/devolvidas
             decimal saldo_fixar = ps_fixado_total.Value;
             if (!(bsItensNota.DataSource as TList_RegLanFaturamento_Item).Exists(p => p.St_processar))
             {
                 for (int i = 0; i < bsItensNota.Count; i++)
                 {
                     if (saldo_fixar > 0)
                     {
                         (bsFixacao.Current as TRegistro_LanFixacao).lFixacaonf.Add(
                             new TRegistro_Fixacao_NF()
                         {
                             Cd_empresa      = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Cd_empresa,
                             Nr_notafiscal   = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Nr_notafiscal,
                             Nr_serie        = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Nr_serie,
                             Nr_lanctofiscal = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Nr_lanctofiscal,
                             Id_nfitem       = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Id_nfitem,
                             Id_variedade    = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Id_variedade,
                             Qtd_fixacao     = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ?
                                               (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar : saldo_fixar,
                             Vl_pauta   = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario,
                             Vl_fixacao = (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar <saldo_fixar ?
                                                                                                         TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) :
                                                                                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null),
                                                                                                             Vl_complemento = vl_unitario.Value> (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario ?
                                          ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ?
                                           TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) :
                                           TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) -
                                          ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ?
                                           TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null) :
                                           TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null)) : decimal.Zero,
                             Vl_devolucao = vl_unitario.Value < (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario ?
                                            ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ?
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null) :
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (bsItensNota[i] as TRegistro_LanFaturamento_Item).Vl_unitario, 2, null)) -
                                            ((bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ?
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) :
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) : decimal.Zero
                         });
                         saldo_fixar -= (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar < saldo_fixar ? (bsItensNota[i] as TRegistro_LanFaturamento_Item).Saldo_fixar : saldo_fixar;
                     }
                     else
                     {
                         break;
                     }
                 }
             }
             else
             {
                 if (saldo_fixar > 0)
                 {
                     (bsItensNota.DataSource as TList_RegLanFaturamento_Item).FindAll(p => p.St_processar).ForEach(p =>
                     {
                         (bsFixacao.Current as TRegistro_LanFixacao).lFixacaonf.Add(
                             new TRegistro_Fixacao_NF()
                         {
                             Cd_empresa      = p.Cd_empresa,
                             Nr_notafiscal   = p.Nr_notafiscal,
                             Nr_serie        = p.Nr_serie,
                             Nr_lanctofiscal = p.Nr_lanctofiscal,
                             Id_nfitem       = p.Id_nfitem,
                             Id_variedade    = p.Id_variedade,
                             Qtd_fixacao     = p.Saldo_fixar < saldo_fixar ?
                                               p.Saldo_fixar : saldo_fixar,
                             Vl_pauta   = p.Vl_unitario,
                             Vl_fixacao = p.Saldo_fixar <saldo_fixar ?
                                                         TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) :
                                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null),
                                                             Vl_complemento = vl_unitario.Value> p.Vl_unitario ? (p.Saldo_fixar < saldo_fixar ?
                                                                                                                  TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) :
                                                                                                                  TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) -
                                          (p.Saldo_fixar < saldo_fixar ?
                                           TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * p.Vl_unitario, 2, null) :
                                           TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * p.Vl_unitario, 2, null)) : decimal.Zero,
                             Vl_devolucao = vl_unitario.Value < p.Vl_unitario ?
                                            (p.Saldo_fixar < saldo_fixar ?
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * p.Vl_unitario, 2, null) :
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * p.Vl_unitario, 2, null)) -
                                            (p.Saldo_fixar < saldo_fixar ?
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, p.Saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null) :
                                             TCN_CadConvUnidade.ConvertUnid(cd_unidestoque.Text, cd_unidvalorEditDefault.Text, saldo_fixar * (vl_unitario.Value + vl_bonificacao.Value), 2, null)) : decimal.Zero
                         });
                         saldo_fixar -= p.Saldo_fixar < saldo_fixar ? p.Saldo_fixar : saldo_fixar;
                     });
                 }
             }
             if (saldo_fixar > 0)
             {
                 (bsFixacao.Current as TRegistro_LanFixacao).Ps_fixado_total = (bsFixacao.Current as TRegistro_LanFixacao).Ps_fixado_total - saldo_fixar;
                 (bsFixacao.Current as TRegistro_LanFixacao).Vl_fixacao      = (bsFixacao.Current as TRegistro_LanFixacao).Ps_fixado_total *
                                                                               ((bsFixacao.Current as TRegistro_LanFixacao).Vl_unitario + (bsFixacao.Current as TRegistro_LanFixacao).Vl_bonificacao);
             }
             DialogResult = DialogResult.OK;
         }
     }
 }