예제 #1
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;
        }
예제 #2
0
        private RectangleF GetFolhaRect()
        {
            BlocoDadosNFe bloco = BlocosSuperiores.FirstOrDefault(x => x is BlocoDadosNFe) as BlocoDadosNFe;

            if (bloco == null)
            {
                throw new Exception("O bloco BlocoDadosNFe não foi encontrado.");
            }

            RectangleF r = bloco.RetanguloFolha;

            r.X += bloco.Posicao.X;
            r.Y += bloco.Posicao.Y;

            return(r);
        }
예제 #3
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;
        }