예제 #1
0
        public void Gerar()
        {
            if (_FoiGerado)
            {
                throw new InvalidOperationException("O Danfe já foi gerado.");
            }

            IdentificacaoEmitente.Logo = _LogoObject;
            var tabela = new TabelaProdutosServicos(ViewModel, EstiloPadrao);

            while (true)
            {
                DanfePagina p = CriarPagina();

                tabela.SetPosition(p.RetanguloCorpo.Location);
                tabela.SetSize(p.RetanguloCorpo.Size);
                tabela.Draw(p.Gfx);

                p.Gfx.Stroke();
                p.Gfx.Flush();

                if (tabela.CompletamenteDesenhada)
                {
                    break;
                }
            }

            PreencherNumeroFolhas();
            _FoiGerado = true;
        }
예제 #2
0
        /// <summary>
        /// Gera o DANFE.
        /// </summary>
        public void Gerar()
        {
            if (FoiGerado)
            {
                return;
            }

            DanfePagina page = CriarPaginar();
            float       y = InnerRect.Top, y2 = InnerRect.Bottom;

            var canhoto         = new BlocoCanhoto(this);
            var dadosNfe        = new BlocoDadosNFe(this);
            var desti           = new BlocoDestinatario(this);
            var faturas         = new BlocoFaturas(this);
            var calcImposto     = new BlocoCalculoImposto(this);
            var transportador   = new BlocoTransportador(this);
            var dadosAdicionais = new BlocoDadosAdicionais(this);
            var issqn           = new BlocoIssqn(this);

            page.AdicionarBlocoSuperior(canhoto);
            page.AdicionarBlocoSuperior(dadosNfe);
            page.AdicionarBlocoSuperior(desti);

            if (Model.Duplicatas.Count > 0)
            {
                page.AdicionarBlocoSuperior(faturas);
            }

            page.AdicionarBlocoSuperior(calcImposto);
            page.AdicionarBlocoSuperior(transportador);

            if (Model.MostrarCalculoIssqn)
            {
                page.AdicionarBlocoInferior(issqn);
            }

            page.AdicionarBlocoInferior(dadosAdicionais);

            BlocoProdutos produtos = new BlocoProdutos(this, page.GetAlturaCorpo(InnerRect), 0);

            produtos.ToXObject();
            int produtoIndex = produtos.ProdutoIndexEnd;

            page.AdicionarBlocoSuperior(produtos);

            while (produtoIndex < Model.Produtos.Count)
            {
                page = CriarPaginar();
                page.AdicionarBlocoSuperior(dadosNfe);
                produtos = new BlocoProdutos(this, page.GetAlturaCorpo(InnerRect), produtoIndex);
                produtos.ToXObject();
                produtoIndex = produtos.ProdutoIndexEnd;

                page.AdicionarBlocoSuperior(produtos);
            }

            RenderizarDocumento();

            FoiGerado = true;
        }
예제 #3
0
        internal DanfePagina CriarPaginar()
        {
            DanfePagina page = new DanfePagina(this);

            Document.Pages.Add(page._Page);
            Paginas.Add(page);
            return(page);
        }
예제 #4
0
        private DanfePagina CriarPagina()
        {
            DanfePagina p = new DanfePagina(this);

            Paginas.Add(p);
            p.DesenharBlocos(Paginas.Count == 1);
            p.DesenharCreditos();

            // Ambiente de homologação
            // 7. O DANFE emitido para representar NF-e cujo uso foi autorizado em ambiente de
            // homologação sempre deverá conter a frase “SEM VALOR FISCAL” no quadro “Informações
            // Complementares” ou em marca d’água destacada.
            if (ViewModel.TipoAmbiente == 2)
            {
                p.DesenharAvisoHomologacao();
            }

            return(p);
        }
예제 #5
0
 internal DanfePagina CriarPaginar()
 {
     DanfePagina page = new DanfePagina(this);
     Document.Pages.Add(page._Page);
     Paginas.Add(page);
     return page;
 }