Beispiel #1
0
        public void CupomNaoFiscal()
        {
            DsCupomNaoFiscal dataSet     = new DsCupomNaoFiscal();
            DataTable        dtMovimento = dataSet.Tables["Movimento"];

            EstoqueController          eController        = new EstoqueController();
            Grades_produtosController  gController        = new Grades_produtosController();
            UnidadesController         unController       = new UnidadesController();
            UsuariosController         usuariosController = new UsuariosController();
            ClientesController         clientesController = new ClientesController();
            Tipos_movimentoController  tipoMovController  = new Tipos_movimentoController();
            Formas_pagamentoController fpgController      = new Formas_pagamentoController();

            if (Movimento.Usuarios == null)
            {
                Movimento.Usuarios = new UsuariosController().Find(Movimento.Usuario_id);
            }

            #region MOVIMENTO
            dtMovimento.Rows.Add(
                Movimento.Id,
                UsuariosController.LojaAtual.Nome_fantasia,
                Movimento.Usuarios.Vendedores.Count == 0 ? Movimento.Usuarios.Nome : Movimento.Usuarios.Vendedores.First().Nome,
                Movimento.Cliente_id == 0 ? "Não identificado" : clientesController.Find(Movimento.Cliente_id).Nome,
                GetTotalParcial(),
                GetTotalDesconto(),
                Movimento.Data,
                "",
                $"{UsuariosController.LojaAtual.Logradouro}, {UsuariosController.LojaAtual.Bairro} - {UsuariosController.LojaAtual.Municipio}",
                tipoMovController.Find(Movimento.Tipo_movimento_id).Descricao,
                UsuariosController.LojaAtual.Cnpj);
            #endregion

            #region ITENS_PAGAMENTO
            DataTable dtItens_pag = dataSet.Tables["Itens_pagamento"];
            itens_pag.ForEach(e => dtItens_pag.Rows.Add(
                                  fpgController.Find(e.Forma_pagamento_id).Descricao,
                                  e.Valor
                                  ));
            #endregion

            #region ITENS_MOVIMENTO
            DataTable dtItens_mov = dataSet.Tables["Itens_movimento"];
            foreach (Itens_movimento item in Itens_movimento)
            {
                string cod_prod                 = string.Empty;
                string descricaoProdo           = item.Produtos.Descricao;
                string descricao_valor_unitario = string.Empty;

                if (!string.IsNullOrEmpty(item.Lote))
                {
                    cod_prod = item.Lote + "SL" + item.Sublote;
                }
                else if (item.Grade_id != null)
                {
                    Grades_produtos grade = gController.Find(item.Grade_id);

                    cod_prod        = item.Grade_id;
                    descricaoProdo += $" {grade.Cores.Descricao} {grade.Tamanhos.Descricao}";
                }
                else
                {
                    cod_prod = item.Produtos.Ean;
                }

                if (item.Unidades == null)
                {
                    item.Unidades = unController.Find(item.Unidade_id);
                }
                descricao_valor_unitario = $"{item.Quant} {item.Unidades.Sigla} x R${item.Valor_unit}";
                dtItens_mov.Rows.Add(item.Id, cod_prod, descricaoProdo, descricao_valor_unitario, item.Quant, item.Valor_final);
            }
            #endregion

            IControllerReport rController = ReportController.GetInstance();
            rController.AddDataSource("Itens_movimento", dtItens_mov);
            rController.AddDataSource("Itens_pagamento", dtItens_pag);
            rController.AddDataSource("Movimento", dtMovimento);

            rController.ShowReport("MOVIMENTO", "MOV001");
        }
Beispiel #2
0
        public void NFCe()
        {
            int retorno = 0;
            //  Declaracoes.tCFCancelar_NFCe_Daruma("", "", "", "", "");
            Clientes cliente = new ClientesController().Find(Movimento.Cliente_id);

            if (cliente == null || cliente.Cpf.Equals("___.___.___-__"))
            {
                retorno = Declaracoes.aCFAbrir_NFCe_Daruma("", "", "", "", "", "",
                                                           "", "", "");
            }
            else
            {
                retorno = Declaracoes.aCFAbrir_NFCe_Daruma(cliente.Cpf, cliente.Nome, cliente.Logradouro, cliente.Numero.ToString(), cliente.Bairro, "",
                                                           cliente.Municipio, cliente.Uf, cliente.Cep);
            }

            LogNFCe($"aCFAbrir_NFCe_Daruma - {Declaracoes.TrataRetorno(retorno)}");

            if (retorno != 1)
            {
                MessageBox.Show("Ocorreu um problema ao emitir a NFC-e. \nAcione o suporte Doware.", "Erro NFC-e", MessageBoxButton.OK, MessageBoxImage.Error);
                Declaracoes.tCFCancelar_NFCe_Daruma("", "", "", "", "");
                return;
            }

            foreach (Itens_movimento item in Itens_movimento)
            {
                Produtos produto = new ProdutosController().Find(item.Produto_id);

                string aliquota = (produto.Aliquota == 0
                    ? "F1"
                    : produto.Aliquota.ToString("N2").Replace(",", "."));

                string tipoDescAcresc = (item.Desconto == 0
                    ? "A$"
                    : "D$");

                string valorDescAcresc = (item.Desconto == 0
                    ? item.Acrescimo.ToString("N2")
                    : item.Desconto.ToString("N2"));

                string codigoItem = (produto.Controla_lote
                    ? item.Lote + "SL" + item.Sublote
                    : produto.Id.ToString());

                retorno = Declaracoes.aCFVenderCompleto_NFCe_Daruma(aliquota, item.Quant.ToString("N2"),
                                                                    item.Valor_unit.ToString("N2").Replace(".", ""), tipoDescAcresc, valorDescAcresc, codigoItem, produto.Ncm, item.Cfop.ToString(), produto.Unidades.Sigla,
                                                                    produto.Descricao, "");

                string msg = $@"aCFVenderCompleto_NFCe_Daruma - {Declaracoes.TrataRetorno(retorno)}
    Aliquita.....: {aliquota}
    Quant........: {item.Quant}
    Valor_unit...: {item.Valor_unit.ToString("N2")}
    Tp. Desc/Acr.: {tipoDescAcresc}
    Vl. Desc/Acr.: {valorDescAcresc}
    Cod. Item....: {codigoItem}
    NCM..........: {produto.Ncm}
    CFOP.........: {item.Cfop}
    Unidade......: {produto.Unidades.Sigla}
    Produto......: {produto.Descricao}
";
                LogNFCe(msg);

                if (retorno != 1)
                {
                    MessageBox.Show("Ocorreu um problema ao emitir a NFC-e. Acione o suporte Doware.", "Erro NFC-e", MessageBoxButton.OK, MessageBoxImage.Exclamation);

                    Declaracoes.tCFCancelar_NFCe_Daruma("", "", "", "", "");
                    return;
                }
            }

            retorno = Declaracoes.aCFTotalizar_NFCe_Daruma("D%", "0,00");
            LogNFCe("aCFTotalizar_NFCe_Daruma - " + Declaracoes.TrataRetorno(retorno));
            List <Itens_pagamento> itens_pagamento = itens_pag;

            foreach (Itens_pagamento item in itens_pagamento)
            {
                Formas_pagamento fpg = new Formas_pagamentoController().Find(item.Forma_pagamento_id);
                retorno = Declaracoes.aCFEfetuarPagamento_NFCe_Daruma(fpg.Descricao, item.Valor.ToString("N2").Replace(".", ""));

                string msg = $@"aCFEfetuarPagamento_NFCe_Daruma - {Declaracoes.TrataRetorno(retorno)}

    Condição pgto.....: {fpg.Descricao}
    Valor.............: {item.Valor.ToString("N2")}
";

                LogNFCe(msg);

                if (retorno != 1)
                {
                    MessageBox.Show("Ocorreu um problema ao emitir a NFC-e. \nAcione o suporte Doware.", "Erro NFC-e", MessageBoxButton.OK, MessageBoxImage.Error);
                    Declaracoes.tCFCancelar_NFCe_Daruma("", "", "", "", "");
                    return;
                }
            }

            retorno = Declaracoes.tCFEncerrar_NFCe_Daruma("NFC-e emitida via Curae ERP - Doware Sistemas");
            LogNFCe($@"tCFEncerrar_NFCe_Daruma - {Declaracoes.TrataRetorno(retorno)}");

            if (retorno != 1)
            {
                StringBuilder sbCodigo   = new StringBuilder(10);
                StringBuilder sbMensagem = new StringBuilder(1000);

                Declaracoes.rAvisoErro_NFCe_Daruma(sbCodigo, sbMensagem);
                LogNFCe($@"tCFEncerrar_NFCe_Daruma - ERRO

Codigo.....: {sbCodigo.ToString()}
Mensagem...: {sbMensagem.ToString()}");

                MessageBox.Show($"A NFC-e não foi autorizada! \nErro: {sbCodigo.ToString()} \nMensagem SEFAZ: {sbMensagem.ToString()}");
                retorno = Declaracoes.tCFCancelar_NFCe_Daruma("", "", "", "", "");
                LogNFCe($"tCFCancelar_NFCe_Daruma - {Declaracoes.TrataRetorno(retorno)}");
                return;
            }

            if (retorno == 1)
            {
                string   diretorio = @"C:\NFC-e\DANFEs\";
                var      directory = new DirectoryInfo(diretorio);
                FileInfo danfe     = directory.GetFiles()
                                     .Where(f => f.Name.Contains("DANFE"))
                                     .OrderByDescending(f => f.LastWriteTime)
                                     .First();

                Parametros parametro = ParametrosController.FindParametro("NF_IMPPADRAO", true);
                if (parametro == null)
                {
                    MessageBox.Show("Não foi possível imprimir a DANFE por que o parâmetro de sistema 'NF_IMPPADRAO' não foi informado ou seu valor não pode ser reconhecido. \n\nAcione o suporte Doware.", "NF_IMPPADRAO", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                if (parametro.Valor == null || parametro.Valor == "")
                {
                    MessageBox.Show("Não foi possível imprimir a DANFE por que o parâmetro de sistema 'NF_IMPPADRAO' não foi informado ou seu valor não pode ser reconhecido. \n\nAcione o suporte Doware.", "NF_IMPPADRAO", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                string parametrosSpool = $@"{danfe.FullName};{parametro.Valor}";

                File.WriteAllText(Directory.GetCurrentDirectory() + @"\PARAMS.txt", "");
                StreamWriter writer = new StreamWriter(Directory.GetCurrentDirectory() + @"\PARAMS.txt");
                writer.WriteLine(parametrosSpool);
                writer.Close();

                System.Diagnostics.Process.Start(Directory.GetCurrentDirectory() + @"\Utilitarios\NFCe_Spool.exe");
            }
        }