Ejemplo n.º 1
0
        private void Gera_Faturamento()
        {
            try
            {
                if ((BS_Comissao != null) && (BS_Comissao.Count > 0))
                {
                    if ((BS_Fechamento_Comissao != null) && (BS_Fechamento_Comissao.Count > 0) && (g_Fechamento_Comissao.Rows.Count > 0))
                    {
                        try
                        {
                            if (VL_Com_Liberada.Text.Trim() == "")
                            {
                                VL_Com_Liberada.Text = "0";
                            }

                            if (Convert.ToDecimal(VL_Com_Liberada.Text) == 0)
                            {
                                throw new Exception("Não existe Valores Liberados para se Faturar!");
                            }
                        }
                        catch
                        {
                            throw new Exception("Problemas com o Valores Liberados para Faturar!");
                        }

                        if (Existe_Empresas_Diferentes() == true)
                        {
                            throw new Exception("Você deve Faturar somente Comissões de E!");
                        }

                        // Cria a Lista com os selecionados
                        TList_Lan_Comissao List_Comissao = new TList_Lan_Comissao();
                        for (int i = 0; i < g_Fechamento_Comissao.SelectedRows.Count; i++)
                        {
                            TRegistro_Lan_Comissao Reg_Lan_Comissao = BS_Fechamento_Comissao[g_Fechamento_Comissao.SelectedRows[i].Index] as TRegistro_Lan_Comissao;
                            List_Comissao.Add(Reg_Lan_Comissao);
                        }

                        TList_CadVendedor     List_Vendedor = TCN_CadVendedor.Busca((BS_Fechamento_Comissao.Current as TRegistro_Lan_Comissao).CD_Vendedor.ToString(), "", "", "", "", "", "", "", "", "", "");
                        TRegistro_CadVendedor Reg_Vendedor  = List_Vendedor[0];
                        if (List_Vendedor.Count == 0)
                        {
                            throw new Exception("Vendedor: " + (BS_Fechamento_Comissao.Current as TRegistro_Lan_Comissao).CD_Vendedor.ToString() + " - " + (BS_Fechamento_Comissao.Current as TRegistro_Lan_Comissao).NM_Vendedor + "não encontrado.");
                        }

                        if (List_Vendedor[0].CD_condpgto_comissao == "")
                        {
                            throw new Exception("Vendedor: " + (BS_Fechamento_Comissao.Current as TRegistro_Lan_Comissao).CD_Vendedor.ToString() + " - " + (BS_Fechamento_Comissao.Current as TRegistro_Lan_Comissao).NM_Vendedor + "\r\n sem condição de Pagamento configurada. Verifique cadastro de Vendedor.");
                        }

                        string Moeda_Padrao = TCN_CadParamGer.BuscaVlString("CD_MOEDA_PADRAO");
                        if (Moeda_Padrao == "")
                        {
                            throw new Exception("Moeda Padrão não encontrado. Verificar configurações Gerais");
                        }

                        string Produto_Comissao = TCN_CadParamGer.BuscaVlString("CD_PRODUTO_COMISSAO");
                        if (Produto_Comissao == "")
                        {
                            throw new Exception("Produto Comissão não encontrado. Verificar configurações Gerais");
                        }
                        TRegistro_CadProduto Reg_Produto = TCN_CadProduto.Busca_Produto_Codigo(Produto_Comissao);
                        if ((Reg_Produto == null) || (Reg_Produto.CD_Unidade == ""))
                        {
                            throw new Exception("Unidade da Comissão não encontrado. Verificar configurações Gerais");
                        }

                        string CFG_Pedido_Comissao = TCN_CadParamGer.BuscaVlString("CFG_Pedido_Comissao");
                        if (CFG_Pedido_Comissao == "")
                        {
                            throw new Exception("Configuração de Pedido de Comissão não encontrado. Verificar configurações Gerais");
                        }

                        TRegistro_CadClifor Reg_Clifor_Vendedor = new TRegistro_CadClifor();
                        Reg_Clifor_Vendedor = TCN_CadClifor.Busca_Clifor_Codigo(List_Vendedor[0].Cd_clifor);

                        TList_CadEmpresa     List_Empresa = new TList_CadEmpresa();
                        TRegistro_CadEmpresa Reg_Empresa  = new TRegistro_CadEmpresa();
                        List_Empresa = TCN_CadEmpresa.Busca((BS_Fechamento_Comissao.Current as TRegistro_Lan_Comissao).CD_Empresa, "", "", null);
                        Reg_Empresa  = List_Empresa[0];

                        TList_CadEndereco     List_Endereco = new TList_CadEndereco();
                        TRegistro_CadEndereco Reg_Endereco  = new TRegistro_CadEndereco();
                        List_Endereco = TCN_CadEndereco.Buscar(List_Vendedor[0].Cd_clifor, List_Vendedor[0].Cd_endereco, "", "", "", "", "", "",
                                                               "", "", "", "", "", "", "", 0, null);
                        Reg_Endereco = List_Endereco[0];


                        TList_RegLanDuplicata Duplicata = new TList_RegLanDuplicata();
                        Duplicata = Gera_Financeiro(CFG_Pedido_Comissao, List_Vendedor[0].CD_condpgto_comissao, Moeda_Padrao, Reg_Empresa, Reg_Clifor_Vendedor, Reg_Endereco);

                        if (Duplicata == null)
                        {
                            throw new Exception("Por favor! \r\n  - Verifique os dados das Duplicatas");
                        }

                        decimal Total_Faturar = Convert.ToDecimal(VL_Com_Liberada.Text);

                        bool    Pode_Gravar    = false;
                        bool    ST_SequenciaNF = false;
                        decimal NR_Nota        = 0;

                        TCD_CadCFGPedidoFiscal Pedido_Fiscal = new TCD_CadCFGPedidoFiscal();
                        TpBusca[] vBusca = new TpBusca[0];
                        Array.Resize(ref vBusca, vBusca.Length + 1);
                        vBusca[vBusca.Length - 1].vNM_Campo = "a.cfg_pedido";
                        vBusca[vBusca.Length - 1].vVL_Busca = "'" + CFG_Pedido_Comissao + "'";
                        vBusca[vBusca.Length - 1].vOperador = "=";

                        Array.Resize(ref vBusca, vBusca.Length + 1);
                        vBusca[vBusca.Length - 1].vNM_Campo = "a.TP_FISCAL";
                        vBusca[vBusca.Length - 1].vVL_Busca = "'N'";
                        vBusca[vBusca.Length - 1].vOperador = "=";

                        DataTable DT_Pedido_Fiscal = Pedido_Fiscal.Buscar(vBusca, 0);

                        if (DT_Pedido_Fiscal.Rows.Count > 0)
                        {
                            if (DT_Pedido_Fiscal.Rows[0]["nr_serie"].ToString().Trim() != string.Empty)
                            {
                                TList_CadSerieNF List_SerieNF = TCN_CadSerieNF.Busca(DT_Pedido_Fiscal.Rows[0]["nr_serie"].ToString().Trim(),
                                                                                     string.Empty,
                                                                                     decimal.Zero,
                                                                                     string.Empty,
                                                                                     string.Empty,
                                                                                     string.Empty,
                                                                                     string.Empty,
                                                                                     string.Empty,
                                                                                     string.Empty,
                                                                                     null);
                                if (List_SerieNF.Count > 0)
                                {
                                    if (List_SerieNF[0].ST_SequenciaAutoBool == false)
                                    {
                                        TFNumero_Nota Numero_Nota = new TFNumero_Nota();
                                        Numero_Nota.pCd_empresa = Reg_Empresa.Cd_empresa;
                                        Numero_Nota.pNm_empresa = Reg_Empresa.Nm_empresa;
                                        Numero_Nota.pCd_clifor  = Reg_Clifor_Vendedor.Cd_clifor;
                                        Numero_Nota.pNm_clifor  = Reg_Clifor_Vendedor.Nm_clifor;
                                        Numero_Nota.pNr_serie   = DT_Pedido_Fiscal.Rows[0]["nr_serie"].ToString().Trim();
                                        Numero_Nota.pDs_serie   = DT_Pedido_Fiscal.Rows[0]["ds_serie"].ToString().Trim();
                                        Numero_Nota.pTp_nota    = "P";
                                        if (Numero_Nota.ShowDialog() == DialogResult.OK)
                                        {
                                            NR_Nota     = Numero_Nota.pNr_notafiscal;
                                            Pode_Gravar = true;
                                        }
                                        else
                                        {
                                            Pode_Gravar = false;
                                        }
                                    }
                                    else
                                    {
                                        ST_SequenciaNF = true;
                                        Pode_Gravar    = true;
                                    }
                                }
                                else
                                {
                                    throw new Exception("A Configuração do Pedido:" + CFG_Pedido_Comissao + "não está correta. Vefrificar numero de série!");
                                }
                            }
                        }
                        else
                        {
                            throw new Exception("A Configuração do Pedido:" + CFG_Pedido_Comissao + "não está correta");
                        }


                        if (Pode_Gravar == true)
                        {
                            TCN_Lan_Fechamento_Comissao.Gera_Faturamento(List_Comissao, NR_Nota, ST_SequenciaNF, Duplicata, Reg_Vendedor, Moeda_Padrao, Produto_Comissao, Reg_Produto, CFG_Pedido_Comissao,
                                                                         Reg_Clifor_Vendedor, Reg_Empresa, Reg_Endereco, Total_Faturar, null);
                            MessageBox.Show("Comissão Faturada com Sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            afterNovo();
                        }
                        else
                        {
                            throw new Exception("De Alguma forma o processo foi cancelado!");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Erro: \r\n\r\n" + e.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
            }
        }