diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 779ea00c..609a5ce4 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -144,6 +144,17 @@ pt-BR: received_at: "DATA DE RECEBIMENTO" receiver: "IDENTIFICAÇÃO E ASSINATURA DO RECEBEDOR" document: "NF-e\nN°. %{nNF}\nSÉRIE %{serie}" + enderEntrega: + title: "INFORMAÇÕES DO LOCAL DE ENTREGA" + cnpj: "CNPJ" + cpf: "CPF" + xLgr: "ENDEREÇO" + nro: "NÚMERO" + xCpl: "COMPLEMENTO" + xBairro: "BAIRRO" + cMun: "CEP" + xMun: "CIDADE" + uf: "ESTADO" nfce: payment_methods: '01': "Dinheiro" diff --git a/lib/br_danfe/danfe_lib/nfe.rb b/lib/br_danfe/danfe_lib/nfe.rb index 15543168..a2f2ab82 100644 --- a/lib/br_danfe/danfe_lib/nfe.rb +++ b/lib/br_danfe/danfe_lib/nfe.rb @@ -40,8 +40,13 @@ def generate(footer_info) end def render_on_first_page(xml) + if NfeLib::Delivery.new(@document, xml).render + + end + NfeLib::Ticket.new(@document, xml).render NfeLib::Dest.new(@document, xml).render + render_delivery(xml) NfeLib::Dup.new(@document, xml).render NfeLib::Icmstot.new(@document, xml).render NfeLib::Transp.new(@document, xml).render @@ -52,6 +57,24 @@ def render_on_first_page(xml) render_products(has_issqn, xml) end + # def render_on_first_page_with_delivery(xml) + # NfeLib::Ticket.new(@document, xml).render + # NfeLib::Dest.new(@document, xml).render + # NfeLib::Delivery.new(@document, xml).render + # NfeLib::Dup.new(@document, xml).render + # NfeLib::Icmstot.new(@document, xml).render + # NfeLib::Transp.new(@document, xml).render + # n_vol = NfeLib::Vol.new(@document, xml).render + # has_issqn = NfeLib::Issqn.new(@document, xml).render + # NfeLib::Infadic.new(@document, xml).render(n_vol) + + # render_products(has_issqn, xml) + # end + + def render_delivery(xml) + NfeLib::Delivery.new(@document, xml).render + end + def render_products(has_issqn, xml) NfeLib::DetBody.new(@document, xml).render(has_issqn) end @@ -79,7 +102,7 @@ def repeated_information(page, y_position, emitter, footer_info, xml, total_page end def render_product_table_title(page) - y_position = page == 1 ? 18.91 : 7.40 + y_position = page == 1 ? 21.91 : 7.40 @document.ititle 0.42, 10.00, 0.75, y_position, 'det.title' end diff --git a/lib/br_danfe/danfe_lib/nfe_lib/delivery.rb b/lib/br_danfe/danfe_lib/nfe_lib/delivery.rb new file mode 100644 index 00000000..234d4965 --- /dev/null +++ b/lib/br_danfe/danfe_lib/nfe_lib/delivery.rb @@ -0,0 +1,90 @@ +module BrDanfe + module DanfeLib + module NfeLib + class Delivery + Y = 12.92 + MAXIMUM_SIZE_FOR_STREET = 319 + + def initialize(pdf, xml) + @pdf = pdf + @xml = xml + @xml_version_is_310_or_newer = @xml.version_is_310_or_newer? + + @address = 'enderEntrega/xLgr' + + @ltitle = Y - 0.42 + @l1 = Y + @l2 = Y + LINE_HEIGHT + @l3 = Y + (LINE_HEIGHT * 2) + end + + def render + if can_render? + @pdf.ititle 0.42, 10.00, 0.75, @ltitle, 'enderEntrega.title' + + render_line1 + render_line2 + render_line3 + + @xml_version_is_310_or_newer ? render_dates_for_nfe_310_or_newer : render_dates_for_older_nfes + end + end + + private + + def can_render? + @xml[@address].to_s.present? + end + + def render_line1 + @pdf.lbox LINE_HEIGHT, 11.82, 0.75, @l1, @xml, 'dest/xNome' + render_cnpj_cpf + end + + def render_cnpj_cpf + if @xml['enderEntrega/CNPJ'] == '' + @pdf.i18n_lbox LINE_HEIGHT, 4.37, 12.57, @l1, 'enderEntrega.CPF', cpf + else + @pdf.lcnpj LINE_HEIGHT, 4.37, 12.57, @l1, @xml, 'enderEntrega/CNPJ' + end + end + + def cpf + cpf = BrDocuments::CnpjCpf::Cpf.new(@xml['enderEntrega/CPF']) + cpf.formatted + end + + def render_line2 + @pdf.i18n_lbox LINE_HEIGHT, 9.66, 0.75, @l2, 'enderEntrega.xLgr', address + @pdf.lbox LINE_HEIGHT, 4.33, 10.41, @l2, @xml, 'enderEntrega/xBairro' + @pdf.i18n_lbox LINE_HEIGHT, 2.20, 14.74, @l2, 'enderEntrega.cMun', cep + end + + def address + address = Helper.generate_address @xml + + if Helper.address_is_too_big(@pdf, address) + address = address[0..address.length - 2] while Helper.mensure_text(@pdf, "#{address.strip}...") > MAXIMUM_SIZE_FOR_STREET && !address.empty? + address = "#{address.strip}..." + end + address + end + + def cep + BrDanfe::Helper.format_cep(@xml['enderEntrega/cMun']) + end + + def render_line3 + @pdf.lbox LINE_HEIGHT, 6.61, 0.75, @l3, @xml, 'enderEntrega/xMun' + @pdf.i18n_lbox LINE_HEIGHT, 4.06, 7.36, @l3, 'enderDest.fone', phone + @pdf.lbox LINE_HEIGHT, 1.14, 11.42, @l3, @xml, 'enderEntrega/UF' + @pdf.lie LINE_HEIGHT, 4.38, 12.56, @l3, @xml, 'enderEntrega/UF', 'dest/IE' + end + + def phone + Phone.format(@xml['enderDest/fone']) + end + end + end + end +end diff --git a/lib/br_danfe/danfe_lib/nfe_lib/det_body.rb b/lib/br_danfe/danfe_lib/nfe_lib/det_body.rb index ba3eda6a..ec7dd08f 100644 --- a/lib/br_danfe/danfe_lib/nfe_lib/det_body.rb +++ b/lib/br_danfe/danfe_lib/nfe_lib/det_body.rb @@ -7,7 +7,7 @@ def initialize(pdf, xml) @xml = xml end - def render(has_issqn) + def render(has_issqn, y_position_on_first_page = false) table_height_on_first_page = table_height_on_first_page has_issqn first_table = create_table next_table = create_table @@ -121,7 +121,8 @@ def render_table(data, start_position, height) end def table_position_on_first_page - Helper.invert(18.07.cm) + y_position = y_position_on_first_page ? 21.07.cm : 18.07.cm + Helper.invert(y_position) end def table_position_on_next_pages diff --git a/lib/br_danfe/danfe_lib/nfe_lib/dup.rb b/lib/br_danfe/danfe_lib/nfe_lib/dup.rb index 2b1871b6..5083ebb0 100644 --- a/lib/br_danfe/danfe_lib/nfe_lib/dup.rb +++ b/lib/br_danfe/danfe_lib/nfe_lib/dup.rb @@ -2,7 +2,7 @@ module BrDanfe module DanfeLib module NfeLib class Dup - Y = 12.92 + Y = 15.92 def initialize(pdf, xml) @pdf = pdf diff --git a/lib/br_danfe/danfe_lib/nfe_lib/icmstot.rb b/lib/br_danfe/danfe_lib/nfe_lib/icmstot.rb index 544a6004..e0521140 100644 --- a/lib/br_danfe/danfe_lib/nfe_lib/icmstot.rb +++ b/lib/br_danfe/danfe_lib/nfe_lib/icmstot.rb @@ -2,7 +2,7 @@ module BrDanfe module DanfeLib module NfeLib class Icmstot - Y = 13.77 + SPACE_BETWEEN_GROUPS + Y = 16.77 + SPACE_BETWEEN_GROUPS def initialize(pdf, xml) @pdf = pdf diff --git a/lib/br_danfe/danfe_lib/nfe_lib/issqn.rb b/lib/br_danfe/danfe_lib/nfe_lib/issqn.rb index f530b868..e929ab10 100644 --- a/lib/br_danfe/danfe_lib/nfe_lib/issqn.rb +++ b/lib/br_danfe/danfe_lib/nfe_lib/issqn.rb @@ -2,7 +2,7 @@ module BrDanfe module DanfeLib module NfeLib class Issqn - Y_POSITION = 25.72 + SPACE_BETWEEN_GROUPS + Y_POSITION = 28.72 + SPACE_BETWEEN_GROUPS def initialize(pdf, xml) @pdf = pdf diff --git a/lib/br_danfe/danfe_lib/nfe_lib/transp.rb b/lib/br_danfe/danfe_lib/nfe_lib/transp.rb index 0e969e1f..f1dbb805 100644 --- a/lib/br_danfe/danfe_lib/nfe_lib/transp.rb +++ b/lib/br_danfe/danfe_lib/nfe_lib/transp.rb @@ -2,7 +2,7 @@ module BrDanfe module DanfeLib module NfeLib class Transp - Y = 15.89 + SPACE_BETWEEN_GROUPS + Y = 18.89 + SPACE_BETWEEN_GROUPS def initialize(pdf, xml) @pdf = pdf diff --git a/lib/br_danfe/danfe_lib/nfe_lib/vol.rb b/lib/br_danfe/danfe_lib/nfe_lib/vol.rb index 4eb7f541..b9f46b0b 100644 --- a/lib/br_danfe/danfe_lib/nfe_lib/vol.rb +++ b/lib/br_danfe/danfe_lib/nfe_lib/vol.rb @@ -2,7 +2,7 @@ module BrDanfe module DanfeLib module NfeLib class Vol - Y = 18.01 + Y = 21.01 def initialize(pdf, xml) @pdf = pdf