From 801d2dd11a29ce8cb35f5d216a48a15e008531e1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Nov 2018 17:17:07 -0300 Subject: [PATCH 01/34] New documents: credit and debit notes 1. New header attribute: logo 2. Dynamic document code in header --- lib/afip_bill/generator.rb | 38 ++++++++--- lib/afip_bill/views/notes/nota_a.html.erb | 64 +++++++++++++++++++ lib/afip_bill/views/notes/nota_b.html.erb | 32 ++++++++++ .../views/shared/_factura_header.html.erb | 12 +++- 4 files changed, 134 insertions(+), 12 deletions(-) create mode 100644 lib/afip_bill/views/notes/nota_a.html.erb create mode 100644 lib/afip_bill/views/notes/nota_b.html.erb diff --git a/lib/afip_bill/generator.rb b/lib/afip_bill/generator.rb index 57587f9..d16cb2e 100644 --- a/lib/afip_bill/generator.rb +++ b/lib/afip_bill/generator.rb @@ -7,25 +7,37 @@ module AfipBill class Generator - attr_reader :afip_bill, :bill_type, :user, :line_items, :header_text - - HEADER_PATH = File.dirname(__FILE__) + '/views/shared/_factura_header.html.erb'.freeze - FOOTER_PATH = File.dirname(__FILE__) + '/views/shared/_factura_footer.html.erb'.freeze - BRAVO_CBTE_TIPO = { "01" => "Factura A", "06" => "Factura B" }.freeze + attr_reader :afip_bill, :bill_name, :bill_type, :user, :line_items, :header_text + + HEADER_PATH = File.dirname(__FILE__) + '/views/shared/_header.html.erb'.freeze + FOOTER_PATH = File.dirname(__FILE__) + '/views/shared/_footer.html.erb'.freeze + BRAVO_CBTE_TIPO = { + '01' => { directory: 'bills', template: 'factura_a', doc_name: 'factura', doc_type: 'a' }, + '06' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'b' }, + '03' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de crédito', doc_type: 'a' }, + '08' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de crédito', doc_type: 'b' }, + '02' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de débito', doc_type: 'a' }, + '07' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de débito', doc_type: 'b' }, + }.freeze IVA = 21.freeze def initialize(bill, user, line_items = [], header_text = 'ORIGINAL') @afip_bill = JSON.parse(bill) @user = user - @bill_type = type_a_or_b_bill + @bill_name = bill_name_s + @bill_type = bill_type_s @line_items = line_items @template_header = ERB.new(File.read(HEADER_PATH)).result(binding) @template_footer = ERB.new(File.read(FOOTER_PATH)).result(binding) @header_text = header_text end - def type_a_or_b_bill - BRAVO_CBTE_TIPO[afip_bill["cbte_tipo"]][-1].downcase + def bill_name_s + BRAVO_CBTE_TIPO[afip_bill["cbte_tipo"]][:doc_name].capitalize + end + + def bill_type_s + BRAVO_CBTE_TIPO[afip_bill["cbte_tipo"]][:doc_type] end def barcode @@ -45,7 +57,15 @@ def generate_pdf_string private def bill_path - File.dirname(__FILE__) + "/views/bills/factura_#{bill_type}.html.erb" + File.dirname(__FILE__) + "/views/#{template_directory}/#{template_name}.html.erb" + end + + def template_name + BRAVO_CBTE_TIPO[afip_bill["cbte_tipo"]][:template] + end + + def template_directory + BRAVO_CBTE_TIPO[afip_bill["cbte_tipo"]][:directory] end def code_numbers diff --git a/lib/afip_bill/views/notes/nota_a.html.erb b/lib/afip_bill/views/notes/nota_a.html.erb new file mode 100644 index 0000000..b51ed0b --- /dev/null +++ b/lib/afip_bill/views/notes/nota_a.html.erb @@ -0,0 +1,64 @@ +<%= @template_header %> + +
Alicuota
+
Código
+
Producto / Servicio
+
Cantidad
+
U. medida
+
Precio Unit.
+
% Bonif
+
Subtotal
+
Subtotal c/IVA
+
IVA
+ +<% top = 283 %> +<% @line_items.each_with_index do |line_item, index| %> +
<%= (index + 1).to_s.rjust(3, "0") %>
+
<%= line_item.name %>
+
<%= line_item.quantity.to_s.tr(".", ",") %>
+
unidades
+
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
0,00
+
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
+
21%
+
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
+ <% top += 25 %> +<% end %> + +
Otros Tributos
+
Descripción
+
Detalle
+
Alíc. %
+
Importe
+
Per./Ret. de Impuesto a las Ganancias
+
0,00
+
Per./Ret. de IVA
+
0,00
+
Importe Neto Gravado: $
+
<%= afip_bill["imp_neto"] %>
+
Per./Ret. Ingresos Brutos
+
0,00
+
IVA 27%: $
+
0,00
+
Impuestos Internos
+
0,00
+
Impuestos Municipales
+
0,00
+
IVA 21%: $
+
<%= afip_bill["imp_iva"] %>
+
Importe Otros Tributos: $
+
0,00
+
IVA 10.5%: $
+
0,00
+
IVA 5%: $
+
0,00
+
IVA 2.5%: $
+
0,00
+
IVA 0%: $
+
0,00
+
Importe Otros Tributos: $
+
0,00
+
Importe Total: $
+
<%= afip_bill["imp_total"] %>
+ +<%= @template_footer %> diff --git a/lib/afip_bill/views/notes/nota_b.html.erb b/lib/afip_bill/views/notes/nota_b.html.erb new file mode 100644 index 0000000..ebe0f77 --- /dev/null +++ b/lib/afip_bill/views/notes/nota_b.html.erb @@ -0,0 +1,32 @@ +<%= @template_header %> + +
Código
+
Producto / Servicio
+
Cantidad
+
U. Medida
+
Precio Unit.
+
% Bonif
+
Imp. Bonif.
+
Subtotal
+ +<% top = 293 %> + <% @line_items.each_with_index do |line_item, index| %> +
<%= (index + 1).to_s.rjust(3, "0") %>
+
<%= line_item.name %>
+
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
+
unidades
+
<%= line_item.imp_unitario.round(2).to_s.tr(".", ",") %>
+
0,00
+
0,00
+
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
+ <% top += 25 %> +<% end %> + +
Subtotal: $
+
<%= afip_bill["imp_total"] %>
+
Importe Otros Tributos: $
+
0,00
+
Importe Total: $
+
<%= afip_bill["imp_total"] %>
+ +<%= @template_footer %> diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index d4c5b0e..86fe58a 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -160,9 +160,15 @@
<%= header_text %>
<%= bill_type.upcase %>
-
FACTURA
-
<%= AfipBill.configuration[:header_business_name] || AfipBill.configuration[:business_name] %>
-
COD. 01
+
<%= bill_name.upcase %>
+ <% if AfipBill.configuration[:logo_path].present? %> +
+ +
+ <% else %> +
<%= AfipBill.configuration[:header_business_name] || AfipBill.configuration[:business_name] %>
+ <% end %> +
COD. <%= afip_bill["cbte_tipo"] %>
Punto de Venta:
<%= AfipBill.configuration[:sale_point] %>
Comp. Nro:
From dbccccecbf21dfe8db3627f6c152cd45d32e9192 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Nov 2018 17:17:51 -0300 Subject: [PATCH 02/34] New bill attribute: custom text --- lib/afip_bill/views/bills/factura_a.html.erb | 4 ++++ lib/afip_bill/views/bills/factura_b.html.erb | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index b51ed0b..e3183a2 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -25,6 +25,10 @@ <% top += 25 %> <% end %> +
+ <%= afip_bill["custom_text"] %> +
+
Otros Tributos
Descripción
Detalle
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index ebe0f77..be082ca 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -22,6 +22,10 @@ <% top += 25 %> <% end %> +
+ <%= afip_bill["custom_text"] %> +
+
Subtotal: $
<%= afip_bill["imp_total"] %>
Importe Otros Tributos: $
From 0d2ca8c4a0fd048647be7f2d308021ea714b3cb3 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 7 Nov 2018 19:27:53 -0300 Subject: [PATCH 03/34] path fix --- lib/afip_bill/generator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/afip_bill/generator.rb b/lib/afip_bill/generator.rb index d16cb2e..012a84a 100644 --- a/lib/afip_bill/generator.rb +++ b/lib/afip_bill/generator.rb @@ -9,8 +9,8 @@ module AfipBill class Generator attr_reader :afip_bill, :bill_name, :bill_type, :user, :line_items, :header_text - HEADER_PATH = File.dirname(__FILE__) + '/views/shared/_header.html.erb'.freeze - FOOTER_PATH = File.dirname(__FILE__) + '/views/shared/_footer.html.erb'.freeze + HEADER_PATH = File.dirname(__FILE__) + '/views/shared/_factura_header.html.erb'.freeze + FOOTER_PATH = File.dirname(__FILE__) + '/views/shared/_factura_footer.html.erb'.freeze BRAVO_CBTE_TIPO = { '01' => { directory: 'bills', template: 'factura_a', doc_name: 'factura', doc_type: 'a' }, '06' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'b' }, From d5394086e52073d851500555f1fc31040c8ae92f Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 8 Nov 2018 19:48:52 -0300 Subject: [PATCH 04/34] ajustando algunos margenes --- lib/afip_bill/views/bills/factura_b.html.erb | 16 ++++++++-------- .../views/shared/_factura_header.html.erb | 10 +++++----- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index be082ca..293abb9 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -1,13 +1,13 @@ <%= @template_header %> -
Código
-
Producto / Servicio
-
Cantidad
-
U. Medida
-
Precio Unit.
-
% Bonif
-
Imp. Bonif.
-
Subtotal
+
Código
+
Producto / Servicio
+
Cantidad
+
U. Medida
+
Precio Unit.
+
% Bonif
+
Imp. Bonif.
+
Subtotal
<% top = 293 %> <% @line_items.each_with_index do |line_item, index| %> diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 86fe58a..5d53c22 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -159,7 +159,7 @@
<%= header_text %>
-
<%= bill_type.upcase %>
+
<%= bill_type.upcase %>
<%= bill_name.upcase %>
<% if AfipBill.configuration[:logo_path].present? %>
@@ -190,10 +190,10 @@
Hasta:<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
Fecha de Vto. para el pago:
<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
-
CUIT:
-
<%= afip_bill["doc_num"] %>
-
Apellido y Nombre / Razón Social:
-
<%= bill_type == "a" ? user.company_name : user.owner_name %>
+
CUIT:
+
<%= afip_bill["doc_num"] %>
+
Apellido y Nombre / Razón Social:
+
<%= bill_type == "a" ? user.company_name : user.owner_name %>
Condición frente al IVA:
<%= user.tax_category %>
Domicilio Comercial: <%= user.address %>
From 6d520342fb3b691109661559bf8407108b465271 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 9 Nov 2018 09:02:06 -0300 Subject: [PATCH 05/34] Ajuste en nombre de fantasia en encabezado MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Alineación y que si es muy largo no se superponga --- lib/afip_bill/views/shared/_factura_header.html.erb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 5d53c22..ee8a42f 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -166,7 +166,11 @@
<% else %> -
<%= AfipBill.configuration[:header_business_name] || AfipBill.configuration[:business_name] %>
+
+ + <%= AfipBill.configuration[:header_business_name] || AfipBill.configuration[:business_name] %> + +
<% end %>
COD. <%= afip_bill["cbte_tipo"] %>
Punto de Venta:
From 28faad5672fdefc2243137345d49a3fc077ece19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Fri, 9 Nov 2018 18:32:46 -0300 Subject: [PATCH 06/34] Fixed margins and zoom level WOMM --- lib/afip_bill/generator.rb | 15 ++++++++++++--- .../views/shared/_factura_header.html.erb | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/afip_bill/generator.rb b/lib/afip_bill/generator.rb index 012a84a..c08c5df 100644 --- a/lib/afip_bill/generator.rb +++ b/lib/afip_bill/generator.rb @@ -44,14 +44,23 @@ def barcode @barcode ||= Barby::Code25Interleaved.new(code_numbers) end + def pdfkit_options + { + zoom: '1.65', + 'margin-bottom': '0.05in', + 'margin-top': '0.05in', + 'margin-left': '0.2in', + 'margin-right': '0.2in' + } + end + def generate_pdf_file tempfile = Tempfile.new("afip_bill.pdf") - - PDFKit.new(template).to_file(tempfile.path) + PDFKit.new(template, pdfkit_options).to_file(tempfile.path) end def generate_pdf_string - PDFKit.new(template).to_pdf + PDFKit.new(template, pdfkit_options).to_pdf end private diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 86fe58a..e196b00 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -29,6 +29,7 @@ } body { line-height: 1; + width: 595px !important; } ol, ul { list-style: none; @@ -54,6 +55,7 @@ margin-left: -297px; top: 0px; width: 595px; + width: 100%; height: 842px; overflow: hidden; border: 1px solid grey; From af71fc77cdde7248f2bcb6db2b7d3d53e79eff37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Mon, 12 Nov 2018 08:45:57 -0800 Subject: [PATCH 07/34] Main margin improvements --- lib/afip_bill/views/shared/_factura_header.html.erb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 1576dc5..6a6f8f9 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -56,9 +56,10 @@ top: 0px; width: 595px; width: 100%; - height: 842px; + height: 790px; + max-height: 790px; overflow: hidden; - border: 1px solid grey; + border: none; } span.cls_003, div.cls_003, span.cls_009, div.cls_009, span.cls_004, div.cls_004, span.cls_010, div.cls_010, From f7d81b2aa0978edc5fa0d3410a58f1ddabaecd23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Mon, 12 Nov 2018 08:46:18 -0800 Subject: [PATCH 08/34] Compress items' lines to fit more of them --- lib/afip_bill/views/bills/factura_a.html.erb | 2 +- lib/afip_bill/views/bills/factura_b.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index e3183a2..9666884 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -22,7 +22,7 @@
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
21%
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
- <% top += 25 %> + <% top += 15 %> <% end %>
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 293abb9..52dac70 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -19,7 +19,7 @@
0,00
0,00
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
- <% top += 25 %> + <% top += 15 %> <% end %>
From 9a0d97200aca11eb62a983fd5d039ec07a5c082e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Mon, 12 Nov 2018 09:00:09 -0800 Subject: [PATCH 09/34] Improve alignment for unit prices --- lib/afip_bill/views/bills/factura_a.html.erb | 2 +- lib/afip_bill/views/bills/factura_b.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index 9666884..7310eb3 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -17,7 +17,7 @@
<%= line_item.name %>
<%= line_item.quantity.to_s.tr(".", ",") %>
unidades
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
0,00
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
21%
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 52dac70..294f31f 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -15,7 +15,7 @@
<%= line_item.name %>
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
unidades
-
<%= line_item.imp_unitario.round(2).to_s.tr(".", ",") %>
+
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
0,00
0,00
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
From 2c8e20e4aeb893c972405007762d8638e93b4268 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 12 Nov 2018 21:09:06 -0300 Subject: [PATCH 10/34] some width and alignment fixes --- lib/afip_bill/views/bills/factura_a.html.erb | 2 +- lib/afip_bill/views/bills/factura_b.html.erb | 10 ++++++---- .../views/shared/_factura_header.html.erb | 18 +++++++++--------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index 7310eb3..ab56775 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -52,7 +52,7 @@
<%= afip_bill["imp_iva"] %>
Importe Otros Tributos: $
0,00
-
IVA 10.5%: $
+
IVA 10.5%: $
0,00
IVA 5%: $
0,00
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 294f31f..e665e7d 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -26,11 +26,13 @@ <%= afip_bill["custom_text"] %>
-
Subtotal: $
-
<%= afip_bill["imp_total"] %>
+
+ Subtotal: $ +
+
<%= afip_bill["imp_total"] %>
Importe Otros Tributos: $
-
0,00
+
0,00
Importe Total: $
-
<%= afip_bill["imp_total"] %>
+
<%= afip_bill["imp_total"] %>
<%= @template_footer %> diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 2d00909..f633687 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -176,22 +176,22 @@
<% end %>
COD. <%= afip_bill["cbte_tipo"] %>
-
Punto de Venta:
+
Punto de Venta:
<%= AfipBill.configuration[:sale_point] %>
Comp. Nro:
<%= afip_bill["cbte_hasta"].to_s.rjust(8, "0") %>
Razón Social: <%= AfipBill.configuration[:business_name] %>
-
Fecha de Emisión:
+
Fecha de Emisión:
<%= Date.parse(afip_bill["cbte_fch"]).strftime("%d/%m/%Y") %>
-
Domicilio Comercial: <%= AfipBill.configuration[:business_address] %>
+
Domicilio Comercial: <%= AfipBill.configuration[:business_address] %>
CUIT:
<%= AfipBill.configuration[:business_cuit] %>
<%= AfipBill.configuration[:city] %>
Ingresos Brutos:
<%= AfipBill.configuration[:ingresos_brutos] %>
-
Fecha de Inicio de Actividades:
+
Fecha de Inicio de Actividades:
<%= AfipBill.configuration[:business_start_date] %>
-
Condición frente al IVA: <%= AfipBill.configuration[:iva] %>
+
Condición frente al IVA: <%= AfipBill.configuration[:iva] %>
Período Facturado Desde:
<%= Date.parse(afip_bill["fch_serv_desde"]).strftime("%d/%m/%Y") %>
Hasta:<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
@@ -200,8 +200,8 @@
CUIT:
<%= afip_bill["doc_num"] %>
Apellido y Nombre / Razón Social:
-
<%= bill_type == "a" ? user.company_name : user.owner_name %>
-
Condición frente al IVA:
+
<%= bill_type == "a" ? user.company_name : user.owner_name %>
+
Condición frente al IVA:
<%= user.tax_category %>
-
Domicilio Comercial: <%= user.address %>
-
Condición de venta: Otra
+
Domicilio Comercial: <%= user.address %>
+
Condición de venta: Otra
From 02a8a84e8460ec6585c691a84ecba3fa6fc4eefa Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 13 Nov 2018 11:12:15 -0300 Subject: [PATCH 11/34] different iva's in lines and totals --- lib/afip_bill/generator.rb | 8 +++---- lib/afip_bill/line_item.rb | 9 ++++---- lib/afip_bill/views/bills/factura_a.html.erb | 8 +++---- lib/afip_bill/views/notes/nota_a.html.erb | 8 +++---- .../views/shared/_factura_header.html.erb | 21 ++++++++++++++----- 5 files changed, 33 insertions(+), 21 deletions(-) diff --git a/lib/afip_bill/generator.rb b/lib/afip_bill/generator.rb index c08c5df..fa51f87 100644 --- a/lib/afip_bill/generator.rb +++ b/lib/afip_bill/generator.rb @@ -46,10 +46,10 @@ def barcode def pdfkit_options { - zoom: '1.65', - 'margin-bottom': '0.05in', - 'margin-top': '0.05in', - 'margin-left': '0.2in', + zoom: '1.65', + 'margin-bottom': '0.05in', + 'margin-top': '0.05in', + 'margin-left': '0.2in', 'margin-right': '0.2in' } end diff --git a/lib/afip_bill/line_item.rb b/lib/afip_bill/line_item.rb index c1425cd..abfd14b 100644 --- a/lib/afip_bill/line_item.rb +++ b/lib/afip_bill/line_item.rb @@ -1,12 +1,13 @@ module AfipBill class LineItem - attr_reader :name, :quantity, :imp_unitario - IVA = 21.freeze + attr_reader :name, :quantity, :imp_unitario, :iva + #IVA = 21.freeze - def initialize(name, quantity, imp_unitario) + def initialize(name, quantity, imp_unitario, iva=nil) @name = name @quantity = quantity @imp_unitario = imp_unitario + @iva = iva end def imp_total_unitario @@ -14,7 +15,7 @@ def imp_total_unitario end def imp_iva - imp_total_unitario * IVA / 100 + imp_total_unitario * iva / 100 end def imp_total_unitario_con_iva diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index ab56775..554d38e 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -20,7 +20,7 @@
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
0,00
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
-
21%
+
<%= line_item.iva %>%
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
<% top += 15 %> <% end %> @@ -49,11 +49,11 @@
Impuestos Municipales
0,00
IVA 21%: $
-
<%= afip_bill["imp_iva"] %>
+
<%= afip_bill["imp_iva_21"] %>
Importe Otros Tributos: $
0,00
-
IVA 10.5%: $
-
0,00
+
IVA 10.5%: $
+
<%= afip_bill["imp_iva_105"] %>
IVA 5%: $
0,00
IVA 2.5%: $
diff --git a/lib/afip_bill/views/notes/nota_a.html.erb b/lib/afip_bill/views/notes/nota_a.html.erb index b51ed0b..e318761 100644 --- a/lib/afip_bill/views/notes/nota_a.html.erb +++ b/lib/afip_bill/views/notes/nota_a.html.erb @@ -20,7 +20,7 @@
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
0,00
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
-
21%
+
<%= line_item.iva %>%
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
<% top += 25 %> <% end %> @@ -45,11 +45,11 @@
Impuestos Municipales
0,00
IVA 21%: $
-
<%= afip_bill["imp_iva"] %>
+
<%= afip_bill["imp_iva_21"] || '0,00' %>
Importe Otros Tributos: $
0,00
-
IVA 10.5%: $
-
0,00
+
IVA 10.5%: $
+
<%= afip_bill["imp_iva_105"] || '0,00' %>
IVA 5%: $
0,00
IVA 2.5%: $
diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index f633687..cd99c80 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -192,11 +192,22 @@
Fecha de Inicio de Actividades:
<%= AfipBill.configuration[:business_start_date] %>
Condición frente al IVA: <%= AfipBill.configuration[:iva] %>
-
Período Facturado Desde:
-
<%= Date.parse(afip_bill["fch_serv_desde"]).strftime("%d/%m/%Y") %>
-
Hasta:<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
-
Fecha de Vto. para el pago:
-
<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
+ + <% if afip_bill["fch_serv_desde"].present? and afip_bill["fch_serv_hasta"].present? %> +
Período Facturado Desde:
+
<%= Date.parse(afip_bill["fch_serv_desde"]).strftime("%d/%m/%Y") %>
+
Hasta:<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
+
+ Fecha de Vto. para el pago: + <%= Date.parse(afip_bill["fch_vto_pago"]).strftime("%d/%m/%Y") %> +
+ <% else %> +
+ Fecha de Vto. para el pago: + <%= Date.parse(afip_bill["fch_vto_pago"]).strftime("%d/%m/%Y") %> +
+ <% end %> +
CUIT:
<%= afip_bill["doc_num"] %>
Apellido y Nombre / Razón Social:
From 27df05deb049b9febe422b4b3bf40cbeb5cfdd10 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 13 Nov 2018 19:54:51 -0300 Subject: [PATCH 12/34] Alignment fix in B notes width adjustments in invoices header --- lib/afip_bill/views/notes/nota_b.html.erb | 6 +++--- lib/afip_bill/views/shared/_factura_header.html.erb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/afip_bill/views/notes/nota_b.html.erb b/lib/afip_bill/views/notes/nota_b.html.erb index ebe0f77..819d2f0 100644 --- a/lib/afip_bill/views/notes/nota_b.html.erb +++ b/lib/afip_bill/views/notes/nota_b.html.erb @@ -23,10 +23,10 @@ <% end %>
Subtotal: $
-
<%= afip_bill["imp_total"] %>
+
<%= afip_bill["imp_total"] %>
Importe Otros Tributos: $
-
0,00
+
0,00
Importe Total: $
-
<%= afip_bill["imp_total"] %>
+
<%= afip_bill["imp_total"] %>
<%= @template_footer %> diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index cd99c80..f5aac70 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -211,8 +211,8 @@
CUIT:
<%= afip_bill["doc_num"] %>
Apellido y Nombre / Razón Social:
-
<%= bill_type == "a" ? user.company_name : user.owner_name %>
+
<%= bill_type == "a" ? user.company_name : user.owner_name %>
Condición frente al IVA:
<%= user.tax_category %>
-
Domicilio Comercial: <%= user.address %>
+
Domicilio Comercial: <%= user.address %>
Condición de venta: Otra
From fbff3a87b49805f9a8b12cb861ea88a3f1e27e1d Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 14 Nov 2018 16:34:49 -0300 Subject: [PATCH 13/34] Some small fixes default iva in items new field in footer: fch_vto_cae making header dates optional. If they are not passed, they are not shown --- lib/afip_bill/line_item.rb | 5 ++--- lib/afip_bill/views/shared/_factura_footer.html.erb | 2 +- lib/afip_bill/views/shared/_factura_header.html.erb | 12 ++++++------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/afip_bill/line_item.rb b/lib/afip_bill/line_item.rb index abfd14b..4cc013d 100644 --- a/lib/afip_bill/line_item.rb +++ b/lib/afip_bill/line_item.rb @@ -1,9 +1,8 @@ module AfipBill class LineItem - attr_reader :name, :quantity, :imp_unitario, :iva - #IVA = 21.freeze + attr_reader :name, :quantity, :imp_unitario, :iva - def initialize(name, quantity, imp_unitario, iva=nil) + def initialize(name, quantity, imp_unitario, iva=21) @name = name @quantity = quantity @imp_unitario = imp_unitario diff --git a/lib/afip_bill/views/shared/_factura_footer.html.erb b/lib/afip_bill/views/shared/_factura_footer.html.erb index 6f99c49..8c8544a 100644 --- a/lib/afip_bill/views/shared/_factura_footer.html.erb +++ b/lib/afip_bill/views/shared/_factura_footer.html.erb @@ -3,7 +3,7 @@
CAE N°: <%= afip_bill["cae"] %>
Esta Administración Federal no se responsabiliza por los datos ingresados en el detalle de la operación
Fecha de Vto. de CAE:
-
<%= Date.parse(afip_bill["fch_vto_pago"]).strftime("%d/%m/%Y") %>
+
<%= Date.parse(afip_bill["fch_vto_cae"]).strftime("%d/%m/%Y") %>
<%= barcode.data %>
diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index f5aac70..8a5e8a3 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -193,20 +193,20 @@
<%= AfipBill.configuration[:business_start_date] %>
Condición frente al IVA: <%= AfipBill.configuration[:iva] %>
- <% if afip_bill["fch_serv_desde"].present? and afip_bill["fch_serv_hasta"].present? %> + <% if afip_bill["fch_serv_desde"].present? %>
Período Facturado Desde:
<%= Date.parse(afip_bill["fch_serv_desde"]).strftime("%d/%m/%Y") %>
+ <% end %> + <% if afip_bill["fch_serv_hasta"].present? %>
Hasta:<%= Date.parse(afip_bill["fch_serv_hasta"]).strftime("%d/%m/%Y") %>
+ <% end %> + <% if afip_bill["fch_vto_pago"].present? %>
Fecha de Vto. para el pago: <%= Date.parse(afip_bill["fch_vto_pago"]).strftime("%d/%m/%Y") %>
- <% else %> -
- Fecha de Vto. para el pago: - <%= Date.parse(afip_bill["fch_vto_pago"]).strftime("%d/%m/%Y") %> -
<% end %> +
CUIT:
<%= afip_bill["doc_num"] %>
From e4845ab49572ac84159a9aa33beb65291326c52c Mon Sep 17 00:00:00 2001 From: Gaston Nan Date: Tue, 11 Dec 2018 18:53:56 -0300 Subject: [PATCH 14/34] configuration fix --- lib/afip_bill.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/afip_bill.rb b/lib/afip_bill.rb index d5857f5..192f2a6 100644 --- a/lib/afip_bill.rb +++ b/lib/afip_bill.rb @@ -16,6 +16,7 @@ def self.configuration ingresos_brutos: nil, iva: nil, sale_point: nil, + logo_path: nil } end end From 130141620216e54e649caf210ac89dbf1d032363 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Dec 2018 12:08:55 -0300 Subject: [PATCH 15/34] condition sale configurable and with default value "Otra" for backward compatibility --- lib/afip_bill/generator.rb | 5 ++++- lib/afip_bill/views/shared/_factura_header.html.erb | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/afip_bill/generator.rb b/lib/afip_bill/generator.rb index fa51f87..fb0fc2e 100644 --- a/lib/afip_bill/generator.rb +++ b/lib/afip_bill/generator.rb @@ -20,9 +20,12 @@ class Generator '07' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de débito', doc_type: 'b' }, }.freeze IVA = 21.freeze + DEFAULTS = { + "cond_venta" => 'Otra' + }.freeze def initialize(bill, user, line_items = [], header_text = 'ORIGINAL') - @afip_bill = JSON.parse(bill) + @afip_bill = DEFAULTS.merge(JSON.parse(bill)) @user = user @bill_name = bill_name_s @bill_type = bill_type_s diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 8a5e8a3..2806103 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -215,4 +215,4 @@
Condición frente al IVA:
<%= user.tax_category %>
Domicilio Comercial: <%= user.address %>
-
Condición de venta: Otra
+
Condición de venta:<%= afip_bill["cond_venta"] %>
From 8c3a697d3e5ac1c2cf5a896211e62bf42710a2e6 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Dec 2018 12:42:56 -0300 Subject: [PATCH 16/34] missing space --- lib/afip_bill/views/shared/_factura_header.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 2806103..4027387 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -215,4 +215,4 @@
Condición frente al IVA:
<%= user.tax_category %>
Domicilio Comercial: <%= user.address %>
-
Condición de venta:<%= afip_bill["cond_venta"] %>
+
Condición de venta: <%= afip_bill["cond_venta"] %>
From 02d6ce7a1dff83ecd05291941ba99c45622a1c58 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Dec 2018 18:23:52 -0300 Subject: [PATCH 17/34] fix in logo size --- lib/afip_bill/views/shared/_factura_header.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 4027387..b3b0435 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -166,7 +166,7 @@
<%= bill_name.upcase %>
<% if AfipBill.configuration[:logo_path].present? %>
- +
<% else %>
From dcde884820332ef503b6d8f359f5ccbbdb699971 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 24 Dec 2018 11:47:13 -0300 Subject: [PATCH 18/34] preparing for c invoicing --- lib/afip_bill/assets/images/factura_c.jpg | Bin 0 -> 24758 bytes lib/afip_bill/generator.rb | 9 ++++++--- 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 lib/afip_bill/assets/images/factura_c.jpg diff --git a/lib/afip_bill/assets/images/factura_c.jpg b/lib/afip_bill/assets/images/factura_c.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4aec529bd5072fbe655ff3d4e5b73b501a156e41 GIT binary patch literal 24758 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 { directory: 'bills', template: 'factura_a', doc_name: 'factura', doc_type: 'a' }, - '06' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'b' }, - '03' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de crédito', doc_type: 'a' }, - '08' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de crédito', doc_type: 'b' }, '02' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de débito', doc_type: 'a' }, + '03' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de crédito', doc_type: 'a' }, + '06' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'b' }, '07' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de débito', doc_type: 'b' }, + '08' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de crédito', doc_type: 'b' }, + '11' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'c' }, + '12' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de débito', doc_type: 'c' }, + '13' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de crédito', doc_type: 'c' } }.freeze IVA = 21.freeze DEFAULTS = { From 5af2f9157625eb5a1570bdcfdef030ff40ecd053 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 9 Jan 2019 20:02:13 -0300 Subject: [PATCH 19/34] more description space in A invoices lines --- lib/afip_bill/assets/images/factura_a.jpg | Bin 23846 -> 26510 bytes lib/afip_bill/views/bills/factura_a.html.erb | 16 ++++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/afip_bill/assets/images/factura_a.jpg b/lib/afip_bill/assets/images/factura_a.jpg index fcc256ea7fdefe35a0b6c718551099f3808528f1..ee69ba1e09395fdb5f21733045f5fa46e9f59171 100644 GIT binary patch literal 26510 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

077_wiQ%oOw-5=l)CImvb_W_Z&2x&0eBS`?o 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 i8%A}$%$+-4bew}-XXUi)8bubp$g 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 DOR;JL diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index 554d38e..a21c465 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -3,10 +3,10 @@

Alicuota
Código
Producto / Servicio
-
Cantidad
-
U. medida
-
Precio Unit.
-
% Bonif
+
Cant.
+ +
Precio Unit.
+
Subtotal
Subtotal c/IVA
IVA
@@ -15,10 +15,10 @@ <% @line_items.each_with_index do |line_item, index| %>
<%= (index + 1).to_s.rjust(3, "0") %>
<%= line_item.name %>
-
<%= line_item.quantity.to_s.tr(".", ",") %>
-
unidades
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
-
0,00
+
<%= line_item.quantity.to_s.tr(".", ",") %>
+ +
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
<%= line_item.iva %>%
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
From 67969c74c75b907722eec021652d819655909d43 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 17 Jan 2019 10:20:43 -0300 Subject: [PATCH 20/34] more descripcion space in all documents and some other adjustments --- lib/afip_bill/assets/images/factura_b.jpg | Bin 24758 -> 27475 bytes lib/afip_bill/assets/images/factura_c.jpg | Bin 24758 -> 27475 bytes lib/afip_bill/views/bills/factura_b.html.erb | 20 +++++++++--------- lib/afip_bill/views/notes/nota_a.html.erb | 16 +++++++------- lib/afip_bill/views/notes/nota_b.html.erb | 20 +++++++++--------- .../views/shared/_factura_header.html.erb | 2 +- 6 files changed, 29 insertions(+), 29 deletions(-) diff --git a/lib/afip_bill/assets/images/factura_b.jpg b/lib/afip_bill/assets/images/factura_b.jpg index 4aec529bd5072fbe655ff3d4e5b73b501a156e41..bba1b1d1810fad52dd3fb3d69d159b35e0f325c4 100644 GIT binary patch literal 27475 zcmeHP2_Tf)+keN5HL_Pk#!ic|R)n!@RCX;2*~*e7MnoDdLb8k0%`QvXij<19(RRz0 zLb*a&LWIdS^PL&{a^rrt`~SNC&v}<~p6C3|bDrlp=RNbDdC&V2-xB|Tn6xx78W0Qy zgSLVVA~w>ct9#fUfFKNJEkpxB5CY|~QUu59@w5g=i@@MyJ_ShI`XR_^ZIJc= z2M|T3Ct^4Rg;E1q5F{=sAr8flrzOP2Vew;9h(wSH0u=-wmrJ51>V5*!6LtR%($njP zQH<672Jk7y)6Z!E0m4N66EShR%_J3pVZ=H}6{4Y{qNbvxp{Ay$rKO>xXJepWwv3*G zg_V(wo0De^HzyYtQb0@?$+w=Li%Vpa=z4JpX=!O5VOfRElJa6w(vl=0Fj`t#`epR1 z7#LPb@^bM?{^dZt4>8j~kD#+~7#~Ez41+Vnh>sv1peH40AyOla2N(q$K}khTLrb>| z0P>k23K$$tfq+v|B7l!!-XI@BFjKPdN+?sY>X}pX9cGg}5tcy1uaaBBu3!FDK+3}9 zBrV;Fm8&>71%-q~MAu5oY}~Y2R!&t-T|;v#M$5p^Xy>lodyFlutPdQtv9)u>x*c)% zIO=)owC@=||A4dM5s~MkqA$c;OiW5nxssZeo^ky~UjEI3Tek}zJbd){Nom>BXBCxI z)o*IvzN>Bg*woze>2qsadr$ATzWxFH_rW2OT`y_K-{?TedjEPX4bf zn>1|7u3Cs54g-w`XNJ%azQ9)1LRw?hXVoCbWcl}=|#_Liz-X=n^;zX#Sk_bI2 zFZ@jKcu0hBIz)(7GeUS|=yxZA zn2+$c;R}|wLi@z5_alaEG&`-KA%Kslh&$pC4Ddh^j+HGL8ac|?vZ*}MEB@yds zIf#&FmM&bg0j)f0TdgwGSF07j+2r{Lg@$4AjDve0W*og5PD_Mzy>Rzi;f`mY5ZyLJmDh&8$vD!lGyD|?{8F2kTRcTh&v}=ai@T|P_!DSm^oR*+ z08|;94t&cnX9}a<8F32jUu@5Ft)>kwQ23M|f*>U&p1$&#)s-u;Q3dW#qM)EQ>klGG7r%YO^X+kQcM~qiG|@*? zD8ec@E9devWuCj1Wg~W-Y`QS@|J(tmkC)vpfuwL&z>OLnjr)Rb*jMnPjAu-@-?#7n+Ty#l%yWZy)VWJbobL!;tVN8(5zKnVm#NK;CSx$ZRsghv!EHqbGH(rq6x4)?tfM znd}f(RTYe~`c|RevxC-%lZQWKaIdI7ze1%eO}X}MNvV8K$4i@wBFu3cgB;{v^5?}I zYPPbBO-eBhmJXoMNHD}wTvivqbvsEqQg`J_X?;DVea0e*p%2cA#8dnO2P5$vu@P~} z28(r;L!lg9#mudoEUd*Wog7de=FTVyF>w?mkM?jjx3ss$A}y>B+Bzx-ci$-%M%r2_ z2=9{FA-=;|)!N2(tEY>#fv2{irKi26td%fYkxt%2&cngk!5V9h^l&)j=ql%-AWRl6 z2ht=qN*I7#tPaTOt7(iw0Hq*2u8X_7yO_I_n3Kyvl!UCTEJ|DwB`LW9AU3!jb;O!` zY;bht2NLLzWEpDKu9hyg&RAO~$BF73oOkS)ls2zr4h|$8kVtu;=#Cw77)MvExuc~u zMokeg#B6P?Uy*r|6VCH783q z2Wv+xMh!_a)5Y4=$<4*mT0xj3-D*m@%AZLWMxy=!_2f|`ZKgTw2TrsGQ<(XENXj91 zk1-FDNV(nmz{Eptq()HO1bj1xN%9Suxo1A)bmk;-3TWhLi&expTH1^Yo|Q9MLeP^Y z)-GggNNMCafs_=J7}tI}WKw&LL*}kFy0#t@Whdy#^5D`QFF%nr0iBeg>U7A-#Qo1Ry5I8EZ!{xVVr;5%Qdp3V}dSBB&@S zsc5Odu?);HX_nE`(JiB+qi3Qg2PXREj7*Hn=~-FX*jQP)Rja3G&Zk#DOx1<+2jgeq;jSM(R@B+V`Qco&>A<0?A$W0Y5q=C2vWX zj^`U?pW^C-|vQ@DH#>sIvxOc$Gx0SOn(@65&-!yvOB+X1Nh0jcyOu++W<7cqBxYB0OBB!`ZaYKIm}P>PWZJHtumqbqo5$!jvR~e8==Cf;j&@Mob!~5R zfAGlh+GE+f3!Zk270q>ucrzx^qCxoDSVfPEbasy^5O^#$m#kOEia`a-MT(Q_88*}m zd$G36DD*1tPL*rEd+4sSTm1~O{bvdr)5{_#LpvCFWLl4EPu1dj_HVctw6>er*>5Yz z5Y6af)&G}mdX+o-c2Wb$9|y`?2-e+!3uieQrSGVJ6cE75 zA|$YV>xD20J`1&9l=Kr5)mvU$zezhih<0MjoJ>t{{%U;f>GTpasrhr}$7Ir88;am$ z{nO2T^S3R#2(gcgA2$#o{t+Xbp(0~%X3xN_adzoU_HBZvTp20s%`~wkCuX0Xr^iGa z@Q(*6u`3!Nm~4M>ZakcJxpMAYVN47M2M5o~eS;tx3*2@cBmBEe{hO_(1<~_{xUY$s z&KAC2moT^UF8$Y@Zsp??GKa9WO_(4d=?fK>zhdOsR=KCPt`jHaIaKtf!G7>kP4&Rd zVY3$>in8+yY6%DW`@J)ZYQAmCzS`+9P#km5+sxi6f8=FH`|w`x>`zW+yB1kEr9(~Z zj=kQ^{MG-prz5xbRuv5N?@+ww5wZDSw-F&qBkYyf;LAqk*ZW08ce3fXd^Wb0P0bX0 zzpKK}9>>jfM^4VQqVTs{?a6+AnpfX!J+jFl!=Iquk9##Lx9(9}X>i<=g8pZPHhOCU zB-#koM948t_tDlv^r{k^`!XdO3`actx!!t!%+eQnf)7A!W)pId7WF5`;XOJ_S) z?a0cJxE`>MSM4*non~X6HB*FMlW&^AV|_GC>(mbr6q5*bCh!OlfuH~@tZ5L`WO-m2 zfJAsixuleIg-aMS3zAp&@B@Uh-u_%Zan~D6tSb8EC$5+9t6H37b3T=jm~+2z{7#(; z4er!0n5cGe7Rq^rr)ZX)Q^wYqQ&yUsUb*84lZnjRCGu~1qoD@%(Z=MC_SdB9-pW{$ zR1dxOLEBeim3Kw@kL7)iw*A27S!C?`Jnu8+DjhOK7+*xOF71wgR$>=lVc@N^?P4E) z4YKJ==A)QQ$_j1NhwJ?K5vr7-Q~IOI>Br-%igoSG(qvFooYC#n;i=qadfv2B#tBuJ z;X*~eUqkm9aXxLX5p zk5JDwPv35-b@yG9O{?=ap|PpED?eyfn6)X!;dJiX?Rt7INxx`EC+GQIC!0fowJQgz zUwfC0R-)e%;FJ8S>8ejd{4@<{C>jMT{V_HN*dG*dF zazj4X9&6o}RQWsG+63KG6q?VA+#^C1ON05({4Eou)fy_TH#0xdxn<~4e<4e7$jF&J z^w&A8B+INrpYukkuK!g@%5<7mJ*8nC=kZ^pTjRe-_2a)tUE{w63w91h5B0KSYzZUxHd#NhUt}~1xM!#RfXIB2MZ+V2R`w})<2S}yKu(Kbt!9( zH(tIlN%_j(o>hK0X(;ef@x|gaLepqmL)VK<56pCm6f3?n_wTZ~RX(cz(d?yJ749(M zRX6^?>PA#*1COm{wO&|)LK`OTE&&b?7kfDCxL>&1l|^U6@s^ceS8;_M`DczRcj%XI zUBqEva)w&qPY%(n*{aV=$Je>0CWDuCa6G&xo~|?}AJ6P_?l%X{I697J{vMpIVN6g| zo#l{ur2@=-!o$d#{UIAVPGT^tx?S?L&;T_$02` zxo|#7?!hbY!!i=sPOc72m%y}Ltmfv| z8(_vng!qP{?dv@DfLRj}3iIBU-+6caP?0gNtSF^+;KK@UvkmBGGyP64r)7%SQE|Pf z^dt8QeB*XK*BShKq8}XXlRglYn-*A~9dhA~l-?%JCw4+jyI-o++jFE{3bK@8J$&sz zqNB{YsvS>qF9zINg8b8dVdO2gwYAq3na{fzG%5T$n0W=9`T5(1d|8I0PIb2up&b2UY@ssG+ipCTyTq;VOoSwV zD?dI?^O0L%ni_!K@_2(mR|{tjc-)hT#$I_^``< zgU5pZC_EiLEUMRs|JaOv-t11Z2hSOp+9Hr+R`8*SrMOk42yOj4Pl)(u+EI#Q{=z{# zRjSv53);QkKlSkly!&#kloUQr3EA+GzkN*;8oU6$gQs3FJn(X9OE)(q#h_-gXw&Fj zdByJ61uIN`$FBr0>?Ty9R$JNb5+Op8w7tk!X`CKH@b~QYy6&!kJ|%_w+3^#?Uf22S zAFp81&>Vqf9(=P0zfz5+NMGp1P;sW>DRg5uN5CiAs3?sTJT@Aq?Dc|~_48}pVbNtB zB5xesfpEWGZp2XGvhPCogS6AtG%L&Bca731m#DwCRM;1>Kf>VbF2f;D#-#TnCnKZT zVsraq+;J`(?ah}E3E~*+N^+@RMM=B>U9X`=0 zo?Gr58bA3o9L-CFLZh}LL`8$uvLc>bzH_9ruE6pA&xsP{nD8n(&#oF&3ucG1Y%@a& zL=`DvHXQRgtFK|dyIQkTY~hM*WAAQO>rfZgeN{_@sE*fsml`N8iOVO@k7j>8*oixZ zwjW_mtrj*k;0&uaNm+#M^71YE$MuYh;|zf^*fxRuUaC|K&`(AVXm%pK0%PCIpdG%= zv?43b%kk`4Pv#oU#O*Qb_oU%96Nm57N?K+0mJh6JvuTa}5NsxnO1PtiKR zc7Z7Mh3~>3AZK02<4cjpZpl@C(Ys?yfuLbRDxFv$TKlCv-@tPCNX4SiOuO$X*LbFb z)(kfugt5!CzT9o?y;BFrx$)4u8wXxq`bp7My7g;~hBKJairEJ!P&d-fC0p~0a%_F3 zp)VO0`3n$<3@nA(XU`JS?;W$1`^)FlRs2oovNSXcg5%Hy_%#{$I8+=Y<%l+BUD&tvyOrwJ}yX zpCL8WVQ~x$r!RALq-pYiX3(OB8 z=5lWG`z45m`^oDgG9K8a8J#l?F1t!A8Wx_k7NxJ4!tTy7pvkSZJJ8)_)W(Gp@1Kzs zEMVW8X2d*NeSUR9hDsm1XU*G_k?QziS_GEr{GRq?o?sgfBem=8C`R?}J=F z;a}5Mc14*M3DUD0^rn_0)+QQ-9Mr>EkEAoE#a6b$L{G3Ar)3%IbyS%Nc5F1LFMYx* z9d3+Fy)Mmtgqro8jA<1sMv^|jiCLL0#Y!t9w#Qgn+XRQ!Z036(955Pb=w}w4aU-Ic zwbq*n#h;a!QS@;w|IT|D2F)=!iERGApOg^~0th=V+(Z%boSNZMl#0PD9 zxRQRi8DyOr4p{ zDv?S*gBBxlwY+>;mG;>@^(2B$a&V~LbB~LOD-dc#DE)IMZ8P|iO|;p>ThS2sz8S<6 zjuH4Nd+364lm&h@OgQ=eb?O96m?Fq2+WB;*o$0Z;b^*XIg;7F43+jVG&h7?t?OMWM zrZxS~^Uv&FH+!`?c-eDK&z#j!0STM0uTEDOr03Cjnnhz^LQ5UJE@w!L?m-ZzOEO}tb14|xQ^1v_S0n%^TkN5xQ_ZvTU4#@p? z`e)jG%h+wooHOkr?y&&|cz_m30nR_zm5@Fd@HO%uVn~xIh~>u^B`6#Q{iq^PoaV>1 zkaOSEIozDuHRh`{Ghfb3P^Rfq9sq~pS261w9;NiQ=nwV1P1 z-YEdc4d7$=;O$}<_1Gu#Noep?wTHK)TmlJRVlYq0WfIptd?HLK-g)YwDiaZE-F9?u zx~xCthM_?lkDjK|kTvo@C-U-Cf50OqNTFaFyZ>C^@bO(2_`R~9eM3084Vvx`>MCBB z_r_SaRKe=faU#UBh&o5SYUtWTKUHT`X1}ezx--)_Uns{7c1p@b;(OS_Y7c1VWH?{6 z+p{KsC*-%lqygBuDd0i5F=S3h`MkjTU^5j{+^_%5)3HV)03a8`g>=Mo{njW z#p7TR>(!6G-YVd{y^Pku*c8Qw>-`TBnel^1y&iy6(kp zT+oX3yK^lb2QCm5d}(WO^jp5IurazxeIYPep4d87Wo4PEY_A`~~zf({)=ZU$jahIGHt)Pae`9@3k&_K8*_qnZbS&^T{Fg?-qzfyq@Isx{koHTtrB)a|P|8**>jN|Kj3 z7eXza5>18i0(?X$#=S2thY)z35ZLL1Q-6zdTIWQy*FzD1!}RH38|4sgKTqAWx{|05 zjQ76OJj}1iXqO9)h#%fTT2ern^t1}q7fm=acY(nk+5FdsGmgn=XWeVCnOK2f=qbq1 zb=gw$5Q(wkxBm2PDU3C0ZIzu9%M*@@(M70x^Oh@S1`12IieBcyYgz+r+;R52@Ppq` zHz(FITyK;q2w{#72)$ClXQ!~Od!js8>~PTUwxI1c?M%U82b5_Qim_B>IH$PVw~+|_ z@#%;$$}>Sro6EK(a}jG(77ux)VY_kT>u@4ulF3unB3zYgxkBRqd^f*&s$C$OAe(UC zkAjQFnRiwc_iW>#_&cX~s+(G_E-;uaV!WFMVLA8^Y2Bn9m>0Dwf>rEvok0TTZSoiW zBcfZ_E}zwYENl^x`)^`wb-D80)7{%Q3H#Ya^w2(vbKbVh-JIK$1-@sli_8}+XRTh- zk)`dI6LclzViju;ZO0#eR}O)19J#rNRlj&)E^zvmC$I1(6`eiyaVMHy+j5qm4bMWl zX|LCA)NSy&VW|>d=OAzwA^M!xmbPB@e4>=-%{&y7wCG_sC(Y!Xb7?V|d3_PPrFA0n z?bA!^tA%^|Mdd`gzOvqE|05B#j2)%q7cVG$+VM&b>)yT6sTI7(DV!U$6UAZz#Gmh2 zrWS5eHt;GWMSx44u@C#(MfQe=-(&qfb6124mkR|P)u7vv*C-GX{Y5)DV+W^r@spfd z%L~r)i^={H#?lrc>_hK(FJUivinO%|UfX}#x4+K#%4M%d%xqBsVj)A?J`Jl<+BPu- z3yAUW6!6C!Ps64g-=Tr2IH(Jpj;h$EmJ*Y=`5NuTK6eBPb~x|yX6IWxeHtgWV)D|v zUFD)3dF{&2?k(KcCRAy@-6NjREk=|1e9KmY;=f#e?mfcFHte3!q!&uTav@2Ba$gMh(lVhP^x z{q8<+gr*i8_yM)w#~r%|=dX;x?c9wwR2`z1s4DN?VW{e$YprGNV}jeYd))zF+@=FI zo3RJ>VD)#XqKuS(*uQ$ew~sf@-(7jXw-?@T^?pOuY2~ZIKA#L%Ri0+?-(#q{hHq8b z(R!n@3BebqtgES`fz?7Fl#xhH#7bQx60t&ATMMBL*8)G08iRnVI6 z4v*D#re<$#fg?lJx0@moiJC+mO@i-EI6_}vpRYq(TLa|K@C(HIyYJV)`>DOtV2bm@ z`tJ7e-%Y?P^EJ9-2>bjERl$|M*@Cx^we@?&A4JRBo4>DVZa;rJ+^@^{Ah+M}v0XLF_(lh|dVFX0<5+yU!bk_g`;ns0vavckJG=8jUc~Ua7B(*4HsX zA`oklXgysseQjNRGi_ayRcmy#-^s4W`}w=$vAB1#yML8k^GVs&CcZd#e}eC30>SH@ z_crb#_!Ing5qy+QHX)U*-Lbpz{4pQew=2c@?he51F!LpND^FvydiMwHuhK@ZLZa7# z>s_hMU;7#@ZC$iB(iE+~7QI#*p{M#*cE<!Y%8a4~ScV}Il5cO)=+_}%wm z3l81~J`N8?yDu2lyg^|0bg%+DO2Oj;;k5%~Kv+mfXr_?x%$dSs!r+&LsIai8grvB* zgt)k*wB&S?mYgjmEj3$m?%a9v=FU}8R8&-gy>Ac^5s_Jvv*e|v<-eORGyl8y6JOfl zl>#!NLMvxXLLoB13>gSi2Er=`&H@k!1c36ty=yatAv1)aBBCJeSK{;}WQH_IfkK7F zL}!YM2+xGh1a~Jia|TpaW>e$IQ^NNj%-h_w#a=}2<*PYym*V~Bs~~RrA=lVutIo~Q z)pOrlw({1#+(WS!wS9H$)J$$K{28r&7)xHeNQQ6fceZ38h&8-6KoSZ8mkN~uPyqMZ zyY>BJe$Kfv{v&m%0p4PGu3kJ+vwvHA&feuZ2vNtvs5B(D*M;#2t$@X#99LD$>!{=2 zrQU-aUz&fKa}IR@I&YJo4tq7pSa`{m?ww=)+)znd>$-;iUJf9CiE^6S+Qg2?XoHf`r2)|p53xu zw^`Vc87<&pUuY4se*>7KHjwExg`2#p3ReE4rD}S%0+k zWPBL4#j4J-Oy9dM*e9Qckxk}oA9p{1KS0{m&|6wI(lNrlPi;ID)|=nUNk*kYB^v!2 z*=8ggVYw^MQ^z8?XC>j*4I2g&IIHBhQO;A_bXY!GMS6y)TRTS{3)FlZn`1@(5^2}1 zlWI0JrDPFy?!co6#Eoa8=t%f;JU&ZB)VYYZa|M2&5@ux-oetYD+bbZh9iNDd4{^tQCo=}~#;j;XG$vo|8uq%11vJ*~M?J-L#hzks=A zhH2{4|B(eRIW)~86 zKB)<3n2(h5uO1N9O|RB&da|RqqjY)bC*_V6@qjWss_q)8&+hRXPaXreSwW*r)eLcv zR&Rj+sET!u8g8GGDv0h4<=c51SJj`7DEve{K^gt%O->svp+`E;g5scxM zyR$9z5{xJg8(IBF>W9B;*u9w3jJkB_1HHq+X4Gwolq(F^A*B(oyH;&^MNw(jq%PH| z4`q=Y7Sg!OuLf_w_yNIRl^q#ad#UY;Z@Yae{CQUD(4_U~NV#Tu+sH+~eS1aGa!Aee zvISA~)asM-jXw$kf8r~F0IEURIm=1R9yi#YDW%VO3uKNhqJ}Sn?SnM}{G%&$Y(vHT z4PkL?zv&wkkn-_1V=ZAKOyb!9>Btw{8+~mUgXY&|@BrzH2ZOU-e#xTVrU#PM^expK zb=15qMzWRzbH+03p!ctsxVv=O`@N39Fn&r)@D1q|;qlb+=;AJ<8b-4JybT99r zk1Zli=kR3CjVcMyZ$MR3&o6yJ^|}&i+QfiNoO+P~dorlKy*A_=eJTN~m>+QzT_0_x zuOc7fc;u{{{`pi-Kf{%hg3jL!!uQ^ThMc_CD0&U0 zsU_kiaMIuHr1$4!fyMa&tHw_F&Wx#I%-}ZItz5tAMJl~$neh7wI>eap(az{mD8Fj- zUt8yqWOP{!ng>1~V7gehWd|)^Dj}Ds9j_x7kcF#5ky)kkzLBaPnr*s^1 zAOHgvi+359kMx&w@1DPR=vZ&-G0r)|i_p1^Idj>ogV4f@Q#}@s`Hzt$H`vr|=Az(u4HWZ zgIPzx7~OXIO&O7YgucF+G6`k5@B(fV#0yj+vk)csOUNAa0jtl{1;5Ck zDuMQ7Ya)Z>3Gho|qH(Z@7br2cu`6r%roOSs=(WGhupBJO1^87yq4iP~qf~M%dz12~ z>!@F3Rg^L?VV^SY))vYyUCvk-{*={FwvKZx=1oEIi*$U9NyvI^YPlUdYrvRa6NJn$ zc@@0#$-9%wjaA|G=ZhRGrOBx0Q?IIKw|q(rasK(}0LnS<86-YA-0V^lP?v1paagQ)WkdlMJAWi3wS07HL+ zH&)*crXi8Z9`pMSdYdeA^rc7FCNAay#I7$5A!s`Bp$?X}Xmm=c>@k0$NbTrv95GOekX)n4Df z`a2_j)sGW{C%v6=JZKxD(rm*hNOxU7`AXDg6&|41D7_WT55iLWN%A%a=TV0iL0*Dm zp|%l~DtxiF<&^8arGLB)5WAH%)Epg|&7JdjUg-2B1ew9X8-nE;trz9vakhQ&8t> z_RKSWFZQM*)aNkXcc;>k2Z;HIE5D(gv*(UlOf+yJ?%DDQb2Cvg4F{E|Lmq2P-!Onc z^lo^T3(G&n(YpXzoZ(NBX_+u^E4ukk1@!WV)_m`sIIutM?V3FS4qvJK_uY{dcSo(Z zwVgauR8SP3kb@cCX3yo`Nx=;BfCo9fu8uU(t>Gy_9~DQX;00YMbjhS35B_NBrRP zDVm>Nz`z}DLuU?liDAc|&<8!`+&zC5nur!zMyp%)9eI#EdkZ0Hv#uCJROxS2BQ?ut z*kcf%if0&I^r)Yzr_`p|#+>Es(MrtEPJm6KCeqES{_=h9_jHJtqm8_9@MlF`b+zI? zc)gJPyswoL)pfRHjAVEf%6R96KZP3AFBsuL*9-PMXB$?ZzkZLb##C{DR#Y0jcA_nu zL(P;f3|;bZhyN*4U!X=xD7UlzO!>g*^Zm?Rw{k;Fz zJdWybXjoBqusE5$z*;e{eez)U1`E9eEcmol>(o7wl7ClF!3-uT?GAb|>zZ|x zm!IpZXd+J$2x_8^0o(c&Z-6n1ArdC96*I-m*mI5Bzy0C}m0>yz7Z;7|kxJ;o9iTq>bM0JD z0hWLJzwEP9r zkH}`<@Gb@aw0w+F(tU+}P+hU#8u}MJfFx-i>{i1X?_hAb{fa)|Vg(-fgU19O_yZt+ z9170B9})S(_+PRRETM*w*|U-UkZDlB@I@yE25PL!!IXD4HxRdiIOZ44jKaAKuD za*AfVPyU?picnD8avw>~jFFOMrwv5S-DS}W2#5ke1i|nRItU80#|)|mhf^6{81%Wq zk!!8J5p=rToSUz2jwdE2lz3x|q9SB9z*p3u%$tD_{@V|v47*lSgMvI+!}fiQ(W_|L zEDgsTMcXjyb(u)_#2yjY@+*FpR3bK1>QtkCN&`K+RHUZ&?1SfwmdDU8|GT^W2K#*= z!v#B6=8p%g0w!H`&bYAYO2EO))AgFcj1z#7gH?B;(cm3Gph$qx|9BjU+V#eqaI|pg zV$)&qeN&+$q5P|`(Iy=|?FZxWa$`?0-FVisZ_o?_&HON9g#M%H6~l4 z9qC;*sHgWT(r^h{-w@tz0)IGpVfOt;_0LZg=FxPkvT#H2Ogv$QtLvi{S{!RkZrdq} zeU`@UQS6@K((l!Y^aH7Qulf#OMM?zIqPe-bi!n+M0M|=a@oa*F|CMx;WD4ntVTyNX z?s15x*^Q4awaZQ#>FRH%lL^6!;5!AdFdIg z>K5V{++*N6WIyb3cYW(wa!O}mc|}uE9{4`GmcsCX40O2$8kwchdScz3*U-~Ny^joP zA_vOJ>Y6EC@C?gVP7!0Ei*BFZO2*1p*3v@*2O9Ea$&{zz!Usyjr^l#h%l-ddPK*w^D49*$P(50S$}XuM z#YJ;(tfbKGO0L^3d_I(p9t0mvl8ep3Afl4GSQ$>WBP`@a*1a0>?R>v~ZL1n;8XB0? z5FbP_)f8JhsB!jvS|jOqhBP{JI9fGQBF&Q2_}9=1;+AZSN5{k{;PXRrV;YuChOjHL z>YOF$iqVq#9ye#Q3P&~r>Q|_s#j$+t>&ycfZNkeaQ^-w&cy2jlINh8FM8gw%tMwOi z7xhc`*Ed+MH^W%y$S(N>tLPw`!KiJgNu=4AIH*%?WOBi$2Jee@MuudiD_%b(`!qi9 z6eWTlkd;Nid1MiWhEzni78d62Q_9YjK$#jHMN5ZwhAwg;wSez!xdOYeAdopUui>>A zirFd>lth}eXt?u;Ls1^tO4c@K9TEvBPJ?wlfO))}mpVw;nU&Hr?&Kb1OJf_<+K15f zWJz1O%#o0ELwSv{))Y@YiC^mpeEFU*XDVE2QnY zpN)~p#W!K&q{%8u**qW=WpMIz;njMpU$V5jsJXK@c%V$ZYFd7@yh>tSWWC}6R~K9b zAAiOs_WbBJ7P9|HYr)EhGf_q%$@;`z#+Lrdr`_d&=b|m@qqF)rm$9Bq_I4@jx{iwO z-sT;t8fG1%$fsO84@TCd<~*kY(2LpOJRqMazmY5g=yb8xVuoZK}s#o-(~_M#S+T@coM zw1r+!FjBOnHK*6C39Go5tmcWjFG=0FGW1)VQ#F2UOMb!?mrYsli*S!?fr^wDF9I%l z)M>6TX)I!4<%7Wk7sDbgQFhA0Ppv4cTc&-33`U^bFGgA8N1l=N;7++j^OU=;kE|Nn zIH&0C5dj1>KRD8J;^r%yblT98uZ2ik)rmJgf z0X@^Yl};zGXd&afGR&mI?~CH1?isXnSkcDy;| zMz%P@o}{dsuQGY4n;MsQJ~kYL{^J4ipn#qPmkpRyL1AGv$+*XPB|`= zY7Ye!QARCzns8E3_p5?`K%qz^XK>?yUtgR0JJ)6aBDp#Ps{_ z@kR9`BXu1`HXe3!iLu2+1=$|mjA$DzvYNcv@L-dB;^OBbH3r8JN;jec2)$DeecP0G zT|3!(VBhMkXg7F2F0-HEdcd|;DZxFy_o(6aZ}BhmXlo8EQ#yL|NOUXsAK_2J*%xNJ zd(;_SMZ=nA`x;Be0Fp6Nr2wFyG8tM8OuwDz8_Y?IC~Up}Ku#|CRfhsP6es?Uf)fWV zp%2Tf_5BUUue=}Z^(LTB=@gtd_+*@~I=-uact9#fUfFKNJEkpxB5CY|~QUu59@w5g=i@@MyJ_ShI`XR_^ZIJc= z2M|T3Ct^4Rg;E1q5F{=sAr8flrzOP2Vew;9h(wSH0u=-wmrJ51>V5*!6LtR%($njP zQH<672Jk7y)6Z!E0m4N66EShR%_J3pVZ=H}6{4Y{qNbvxp{Ay$rKO>xXJepWwv3*G zg_V(wo0De^HzyYtQb0@?$+w=Li%Vpa=z4JpX=!O5VOfRElJa6w(vl=0Fj`t#`epR1 z7#LPb@^bM?{^dZt4>8j~kD#+~7#~Ez41+Vnh>sv1peH40AyOla2N(q$K}khTLrb>| z0P>k23K$$tfq+v|B7l!!-XI@BFjKPdN+?sY>X}pX9cGg}5tcy1uaaBBu3!FDK+3}9 zBrV;Fm8&>71%-q~MAu5oY}~Y2R!&t-T|;v#M$5p^Xy>lodyFlutPdQtv9)u>x*c)% zIO=)owC@=||A4dM5s~MkqA$c;OiW5nxssZeo^ky~UjEI3Tek}zJbd){Nom>BXBCxI z)o*IvzN>Bg*woze>2qsadr$ATzWxFH_rW2OT`y_K-{?TedjEPX4bf zn>1|7u3Cs54g-w`XNJ%azQ9)1LRw?hXVoCbWcl}=|#_Liz-X=n^;zX#Sk_bI2 zFZ@jKcu0hBIz)(7GeUS|=yxZA zn2+$c;R}|wLi@z5_alaEG&`-KA%Kslh&$pC4Ddh^j+HGL8ac|?vZ*}MEB@yds zIf#&FmM&bg0j)f0TdgwGSF07j+2r{Lg@$4AjDve0W*og5PD_Mzy>Rzi;f`mY5ZyLJmDh&8$vD!lGyD|?{8F2kTRcTh&v}=ai@T|P_!DSm^oR*+ z08|;94t&cnX9}a<8F32jUu@5Ft)>kwQ23M|f*>U&p1$&#)s-u;Q3dW#qM)EQ>klGG7r%YO^X+kQcM~qiG|@*? zD8ec@E9devWuCj1Wg~W-Y`QS@|J(tmkC)vpfuwL&z>OLnjr)Rb*jMnPjAu-@-?#7n+Ty#l%yWZy)VWJbobL!;tVN8(5zKnVm#NK;CSx$ZRsghv!EHqbGH(rq6x4)?tfM znd}f(RTYe~`c|RevxC-%lZQWKaIdI7ze1%eO}X}MNvV8K$4i@wBFu3cgB;{v^5?}I zYPPbBO-eBhmJXoMNHD}wTvivqbvsEqQg`J_X?;DVea0e*p%2cA#8dnO2P5$vu@P~} z28(r;L!lg9#mudoEUd*Wog7de=FTVyF>w?mkM?jjx3ss$A}y>B+Bzx-ci$-%M%r2_ z2=9{FA-=;|)!N2(tEY>#fv2{irKi26td%fYkxt%2&cngk!5V9h^l&)j=ql%-AWRl6 z2ht=qN*I7#tPaTOt7(iw0Hq*2u8X_7yO_I_n3Kyvl!UCTEJ|DwB`LW9AU3!jb;O!` zY;bht2NLLzWEpDKu9hyg&RAO~$BF73oOkS)ls2zr4h|$8kVtu;=#Cw77)MvExuc~u zMokeg#B6P?Uy*r|6VCH783q z2Wv+xMh!_a)5Y4=$<4*mT0xj3-D*m@%AZLWMxy=!_2f|`ZKgTw2TrsGQ<(XENXj91 zk1-FDNV(nmz{Eptq()HO1bj1xN%9Suxo1A)bmk;-3TWhLi&expTH1^Yo|Q9MLeP^Y z)-GggNNMCafs_=J7}tI}WKw&LL*}kFy0#t@Whdy#^5D`QFF%nr0iBeg>U7A-#Qo1Ry5I8EZ!{xVVr;5%Qdp3V}dSBB&@S zsc5Odu?);HX_nE`(JiB+qi3Qg2PXREj7*Hn=~-FX*jQP)Rja3G&Zk#DOx1<+2jgeq;jSM(R@B+V`Qco&>A<0?A$W0Y5q=C2vWX zj^`U?pW^C-|vQ@DH#>sIvxOc$Gx0SOn(@65&-!yvOB+X1Nh0jcyOu++W<7cqBxYB0OBB!`ZaYKIm}P>PWZJHtumqbqo5$!jvR~e8==Cf;j&@Mob!~5R zfAGlh+GE+f3!Zk270q>ucrzx^qCxoDSVfPEbasy^5O^#$m#kOEia`a-MT(Q_88*}m zd$G36DD*1tPL*rEd+4sSTm1~O{bvdr)5{_#LpvCFWLl4EPu1dj_HVctw6>er*>5Yz z5Y6af)&G}mdX+o-c2Wb$9|y`?2-e+!3uieQrSGVJ6cE75 zA|$YV>xD20J`1&9l=Kr5)mvU$zezhih<0MjoJ>t{{%U;f>GTpasrhr}$7Ir88;am$ z{nO2T^S3R#2(gcgA2$#o{t+Xbp(0~%X3xN_adzoU_HBZvTp20s%`~wkCuX0Xr^iGa z@Q(*6u`3!Nm~4M>ZakcJxpMAYVN47M2M5o~eS;tx3*2@cBmBEe{hO_(1<~_{xUY$s z&KAC2moT^UF8$Y@Zsp??GKa9WO_(4d=?fK>zhdOsR=KCPt`jHaIaKtf!G7>kP4&Rd zVY3$>in8+yY6%DW`@J)ZYQAmCzS`+9P#km5+sxi6f8=FH`|w`x>`zW+yB1kEr9(~Z zj=kQ^{MG-prz5xbRuv5N?@+ww5wZDSw-F&qBkYyf;LAqk*ZW08ce3fXd^Wb0P0bX0 zzpKK}9>>jfM^4VQqVTs{?a6+AnpfX!J+jFl!=Iquk9##Lx9(9}X>i<=g8pZPHhOCU zB-#koM948t_tDlv^r{k^`!XdO3`actx!!t!%+eQnf)7A!W)pId7WF5`;XOJ_S) z?a0cJxE`>MSM4*non~X6HB*FMlW&^AV|_GC>(mbr6q5*bCh!OlfuH~@tZ5L`WO-m2 zfJAsixuleIg-aMS3zAp&@B@Uh-u_%Zan~D6tSb8EC$5+9t6H37b3T=jm~+2z{7#(; z4er!0n5cGe7Rq^rr)ZX)Q^wYqQ&yUsUb*84lZnjRCGu~1qoD@%(Z=MC_SdB9-pW{$ zR1dxOLEBeim3Kw@kL7)iw*A27S!C?`Jnu8+DjhOK7+*xOF71wgR$>=lVc@N^?P4E) z4YKJ==A)QQ$_j1NhwJ?K5vr7-Q~IOI>Br-%igoSG(qvFooYC#n;i=qadfv2B#tBuJ z;X*~eUqkm9aXxLX5p zk5JDwPv35-b@yG9O{?=ap|PpED?eyfn6)X!;dJiX?Rt7INxx`EC+GQIC!0fowJQgz zUwfC0R-)e%;FJ8S>8ejd{4@<{C>jMT{V_HN*dG*dF zazj4X9&6o}RQWsG+63KG6q?VA+#^C1ON05({4Eou)fy_TH#0xdxn<~4e<4e7$jF&J z^w&A8B+INrpYukkuK!g@%5<7mJ*8nC=kZ^pTjRe-_2a)tUE{w63w91h5B0KSYzZUxHd#NhUt}~1xM!#RfXIB2MZ+V2R`w})<2S}yKu(Kbt!9( zH(tIlN%_j(o>hK0X(;ef@x|gaLepqmL)VK<56pCm6f3?n_wTZ~RX(cz(d?yJ749(M zRX6^?>PA#*1COm{wO&|)LK`OTE&&b?7kfDCxL>&1l|^U6@s^ceS8;_M`DczRcj%XI zUBqEva)w&qPY%(n*{aV=$Je>0CWDuCa6G&xo~|?}AJ6P_?l%X{I697J{vMpIVN6g| zo#l{ur2@=-!o$d#{UIAVPGT^tx?S?L&;T_$02` zxo|#7?!hbY!!i=sPOc72m%y}Ltmfv| z8(_vng!qP{?dv@DfLRj}3iIBU-+6caP?0gNtSF^+;KK@UvkmBGGyP64r)7%SQE|Pf z^dt8QeB*XK*BShKq8}XXlRglYn-*A~9dhA~l-?%JCw4+jyI-o++jFE{3bK@8J$&sz zqNB{YsvS>qF9zINg8b8dVdO2gwYAq3na{fzG%5T$n0W=9`T5(1d|8I0PIb2up&b2UY@ssG+ipCTyTq;VOoSwV zD?dI?^O0L%ni_!K@_2(mR|{tjc-)hT#$I_^``< zgU5pZC_EiLEUMRs|JaOv-t11Z2hSOp+9Hr+R`8*SrMOk42yOj4Pl)(u+EI#Q{=z{# zRjSv53);QkKlSkly!&#kloUQr3EA+GzkN*;8oU6$gQs3FJn(X9OE)(q#h_-gXw&Fj zdByJ61uIN`$FBr0>?Ty9R$JNb5+Op8w7tk!X`CKH@b~QYy6&!kJ|%_w+3^#?Uf22S zAFp81&>Vqf9(=P0zfz5+NMGp1P;sW>DRg5uN5CiAs3?sTJT@Aq?Dc|~_48}pVbNtB zB5xesfpEWGZp2XGvhPCogS6AtG%L&Bca731m#DwCRM;1>Kf>VbF2f;D#-#TnCnKZT zVsraq+;J`(?ah}E3E~*+N^+@RMM=B>U9X`=0 zo?Gr58bA3o9L-CFLZh}LL`8$uvLc>bzH_9ruE6pA&xsP{nD8n(&#oF&3ucG1Y%@a& zL=`DvHXQRgtFK|dyIQkTY~hM*WAAQO>rfZgeN{_@sE*fsml`N8iOVO@k7j>8*oixZ zwjW_mtrj*k;0&uaNm+#M^71YE$MuYh;|zf^*fxRuUaC|K&`(AVXm%pK0%PCIpdG%= zv?43b%kk`4Pv#oU#O*Qb_oU%96Nm57N?K+0mJh6JvuTa}5NsxnO1PtiKR zc7Z7Mh3~>3AZK02<4cjpZpl@C(Ys?yfuLbRDxFv$TKlCv-@tPCNX4SiOuO$X*LbFb z)(kfugt5!CzT9o?y;BFrx$)4u8wXxq`bp7My7g;~hBKJairEJ!P&d-fC0p~0a%_F3 zp)VO0`3n$<3@nA(XU`JS?;W$1`^)FlRs2oovNSXcg5%Hy_%#{$I8+=Y<%l+BUD&tvyOrwJ}yX zpCL8WVQ~x$r!RALq-pYiX3(OB8 z=5lWG`z45m`^oDgG9K8a8J#l?F1t!A8Wx_k7NxJ4!tTy7pvkSZJJ8)_)W(Gp@1Kzs zEMVW8X2d*NeSUR9hDsm1XU*G_k?QziS_GEr{GRq?o?sgfBem=8C`R?}J=F z;a}5Mc14*M3DUD0^rn_0)+QQ-9Mr>EkEAoE#a6b$L{G3Ar)3%IbyS%Nc5F1LFMYx* z9d3+Fy)Mmtgqro8jA<1sMv^|jiCLL0#Y!t9w#Qgn+XRQ!Z036(955Pb=w}w4aU-Ic zwbq*n#h;a!QS@;w|IT|D2F)=!iERGApOg^~0th=V+(Z%boSNZMl#0PD9 zxRQRi8DyOr4p{ zDv?S*gBBxlwY+>;mG;>@^(2B$a&V~LbB~LOD-dc#DE)IMZ8P|iO|;p>ThS2sz8S<6 zjuH4Nd+364lm&h@OgQ=eb?O96m?Fq2+WB;*o$0Z;b^*XIg;7F43+jVG&h7?t?OMWM zrZxS~^Uv&FH+!`?c-eDK&z#j!0STM0uTEDOr03Cjnnhz^LQ5UJE@w!L?m-ZzOEO}tb14|xQ^1v_S0n%^TkN5xQ_ZvTU4#@p? z`e)jG%h+wooHOkr?y&&|cz_m30nR_zm5@Fd@HO%uVn~xIh~>u^B`6#Q{iq^PoaV>1 zkaOSEIozDuHRh`{Ghfb3P^Rfq9sq~pS261w9;NiQ=nwV1P1 z-YEdc4d7$=;O$}<_1Gu#Noep?wTHK)TmlJRVlYq0WfIptd?HLK-g)YwDiaZE-F9?u zx~xCthM_?lkDjK|kTvo@C-U-Cf50OqNTFaFyZ>C^@bO(2_`R~9eM3084Vvx`>MCBB z_r_SaRKe=faU#UBh&o5SYUtWTKUHT`X1}ezx--)_Uns{7c1p@b;(OS_Y7c1VWH?{6 z+p{KsC*-%lqygBuDd0i5F=S3h`MkjTU^5j{+^_%5)3HV)03a8`g>=Mo{njW z#p7TR>(!6G-YVd{y^Pku*c8Qw>-`TBnel^1y&iy6(kp zT+oX3yK^lb2QCm5d}(WO^jp5IurazxeIYPep4d87Wo4PEY_A`~~zf({)=ZU$jahIGHt)Pae`9@3k&_K8*_qnZbS&^T{Fg?-qzfyq@Isx{koHTtrB)a|P|8**>jN|Kj3 z7eXza5>18i0(?X$#=S2thY)z35ZLL1Q-6zdTIWQy*FzD1!}RH38|4sgKTqAWx{|05 zjQ76OJj}1iXqO9)h#%fTT2ern^t1}q7fm=acY(nk+5FdsGmgn=XWeVCnOK2f=qbq1 zb=gw$5Q(wkxBm2PDU3C0ZIzu9%M*@@(M70x^Oh@S1`12IieBcyYgz+r+;R52@Ppq` zHz(FITyK;q2w{#72)$ClXQ!~Od!js8>~PTUwxI1c?M%U82b5_Qim_B>IH$PVw~+|_ z@#%;$$}>Sro6EK(a}jG(77ux)VY_kT>u@4ulF3unB3zYgxkBRqd^f*&s$C$OAe(UC zkAjQFnRiwc_iW>#_&cX~s+(G_E-;uaV!WFMVLA8^Y2Bn9m>0Dwf>rEvok0TTZSoiW zBcfZ_E}zwYENl^x`)^`wb-D80)7{%Q3H#Ya^w2(vbKbVh-JIK$1-@sli_8}+XRTh- zk)`dI6LclzViju;ZO0#eR}O)19J#rNRlj&)E^zvmC$I1(6`eiyaVMHy+j5qm4bMWl zX|LCA)NSy&VW|>d=OAzwA^M!xmbPB@e4>=-%{&y7wCG_sC(Y!Xb7?V|d3_PPrFA0n z?bA!^tA%^|Mdd`gzOvqE|05B#j2)%q7cVG$+VM&b>)yT6sTI7(DV!U$6UAZz#Gmh2 zrWS5eHt;GWMSx44u@C#(MfQe=-(&qfb6124mkR|P)u7vv*C-GX{Y5)DV+W^r@spfd z%L~r)i^={H#?lrc>_hK(FJUivinO%|UfX}#x4+K#%4M%d%xqBsVj)A?J`Jl<+BPu- z3yAUW6!6C!Ps64g-=Tr2IH(Jpj;h$EmJ*Y=`5NuTK6eBPb~x|yX6IWxeHtgWV)D|v zUFD)3dF{&2?k(KcCRAy@-6NjREk=|1e9KmY;=f#e?mfcFHte3!q!&uTav@2Ba$gMh(lVhP^x z{q8<+gr*i8_yM)w#~r%|=dX;x?c9wwR2`z1s4DN?VW{e$YprGNV}jeYd))zF+@=FI zo3RJ>VD)#XqKuS(*uQ$ew~sf@-(7jXw-?@T^?pOuY2~ZIKA#L%Ri0+?-(#q{hHq8b z(R!n@3BebqtgES`fz?7Fl#xhH#7bQx60t&ATMMBL*8)G08iRnVI6 z4v*D#re<$#fg?lJx0@moiJC+mO@i-EI6_}vpRYq(TLa|K@C(HIyYJV)`>DOtV2bm@ z`tJ7e-%Y?P^EJ9-2>bjERl$|M*@Cx^we@?&A4JRBo4>DVZa;rJ+^@^{Ah+M}v0XLF_(lh|dVFX0<5+yU!bk_g`;ns0vavckJG=8jUc~Ua7B(*4HsX zA`oklXgysseQjNRGi_ayRcmy#-^s4W`}w=$vAB1#yML8k^GVs&CcZd#e}eC30>SH@ z_crb#_!Ing5qy+QHX)U*-Lbpz{4pQew=2c@?he51F!LpND^FvydiMwHuhK@ZLZa7# z>s_hMU;7#@ZC$iB(iE+~7QI#*p{M#*cE<!Y%8a4~ScV}Il5cO)=+_}%wm z3l81~J`N8?yDu2lyg^|0bg%+DO2Oj;;k5%~Kv+mfXr_?x%$dSs!r+&LsIai8grvB* zgt)k*wB&S?mYgjmEj3$m?%a9v=FU}8R8&-gy>Ac^5s_Jvv*e|v<-eORGyl8y6JOfl zl>#!NLMvxXLLoB13>gSi2Er=`&H@k!1c36ty=yatAv1)aBBCJeSK{;}WQH_IfkK7F zL}!YM2+xGh1a~Jia|TpaW>e$IQ^NNj%-h_w#a=}2<*PYym*V~Bs~~RrA=lVutIo~Q z)pOrlw({1#+(WS!wS9H$)J$$K{28r&7)xHeNQQ6fceZ38h&8-6KoSZ8mkN~uPyqMZ zyY>BJe$Kfv{v&m%0p4PGu3kJ+vwvHA&feuZ2vNtvs5B(D*M;#2t$@X#99LD$>!{=2 zrQU-aUz&fKa}IR@I&YJo4tq7pSa`{m?ww=)+)znd>$-;iUJf9CiE^6S+Qg2?XoHf`r2)|p53xu zw^`Vc87<&pUuY4se*>7KHjwExg`2#p3ReE4rD}S%0+k zWPBL4#j4J-Oy9dM*e9Qckxk}oA9p{1KS0{m&|6wI(lNrlPi;ID)|=nUNk*kYB^v!2 z*=8ggVYw^MQ^z8?XC>j*4I2g&IIHBhQO;A_bXY!GMS6y)TRTS{3)FlZn`1@(5^2}1 zlWI0JrDPFy?!co6#Eoa8=t%f;JU&ZB)VYYZa|M2&5@ux-oetYD+bbZh9iNDd4{^tQCo=}~#;j;XG$vo|8uq%11vJ*~M?J-L#hzks=A zhH2{4|B(eRIW)~86 zKB)<3n2(h5uO1N9O|RB&da|RqqjY)bC*_V6@qjWss_q)8&+hRXPaXreSwW*r)eLcv zR&Rj+sET!u8g8GGDv0h4<=c51SJj`7DEve{K^gt%O->svp+`E;g5scxM zyR$9z5{xJg8(IBF>W9B;*u9w3jJkB_1HHq+X4Gwolq(F^A*B(oyH;&^MNw(jq%PH| z4`q=Y7Sg!OuLf_w_yNIRl^q#ad#UY;Z@Yae{CQUD(4_U~NV#Tu+sH+~eS1aGa!Aee zvISA~)asM-jXw$kf8r~F0IEURIm=1R9yi#YDW%VO3uKNhqJ}Sn?SnM}{G%&$Y(vHT z4PkL?zv&wkkn-_1V=ZAKOyb!9>Btw{8+~mUgXY&|@BrzH2ZOU-e#xTVrU#PM^expK zb=15qMzWRzbH+03p!ctsxVv=O`@N39Fn&r)@D1q|;qlb+=;AJ<8b-4JybT99r zk1Zli=kR3CjVcMyZ$MR3&o6yJ^|}&i+QfiNoO+P~dorlKy*A_=eJTN~m>+QzT_0_x zuOc7fc;u{{{`pi-Kf{%hg3jL!!uQ^ThMc_CD0&U0 zsU_kiaMIuHr1$4!fyMa&tHw_F&Wx#I%-}ZItz5tAMJl~$neh7wI>eap(az{mD8Fj- zUt8yqWOP{!ng>1~V7gehWd|)^Dj}Ds9j_x7kcF#5ky)kkzLBaPnr*s^1 zAOHgvi+359kMx&w@1DPR=vZ&-G0r)|i_p1^Idj>ogV4f@Q#}@s`Hzt$H`vr|=Az(u4HWZ zgIPzx7~OXIO&O7YgucF+G6`k5@B(fV#0yj+vk)csOUNAa0jtl{1;5Ck zDuMQ7Ya)Z>3Gho|qH(Z@7br2cu`6r%roOSs=(WGhupBJO1^87yq4iP~qf~M%dz12~ z>!@F3Rg^L?VV^SY))vYyUCvk-{*={FwvKZx=1oEIi*$U9NyvI^YPlUdYrvRa6NJn$ zc@@0#$-9%wjaA|G=ZhRGrOBx0Q?IIKw|q(rasK(}0LnS<86-YA-0V^lP?v1paagQ)WkdlMJAWi3wS07HL+ zH&)*crXi8Z9`pMSdYdeA^rc7FCNAay#I7$5A!s`Bp$?X}Xmm=c>@k0$NbTrv95GOekX)n4Df z`a2_j)sGW{C%v6=JZKxD(rm*hNOxU7`AXDg6&|41D7_WT55iLWN%A%a=TV0iL0*Dm zp|%l~DtxiF<&^8arGLB)5WAH%)Epg|&7JdjUg-2B1ew9X8-nE;trz9vakhQ&8t> z_RKSWFZQM*)aNkXcc;>k2Z;HIE5D(gv*(UlOf+yJ?%DDQb2Cvg4F{E|Lmq2P-!Onc z^lo^T3(G&n(YpXzoZ(NBX_+u^E4ukk1@!WV)_m`sIIutM?V3FS4qvJK_uY{dcSo(Z zwVgauR8SP3kb@cCX3yo`Nx=;BfCo9fu8uU(t>Gy_9~DQX;00YMbjhS35B_NBrRP zDVm>Nz`z}DLuU?liDAc|&<8!`+&zC5nur!zMyp%)9eI#EdkZ0Hv#uCJROxS2BQ?ut z*kcf%if0&I^r)Yzr_`p|#+>Es(MrtEPJm6KCeqES{_=h9_jHJtqm8_9@MlF`b+zI? zc)gJPyswoL)pfRHjAVEf%6R96KZP3AFBsuL*9-PMXB$?ZzkZLb##C{DR#Y0jcA_nu zL(P;f3|;bZhyN*4U!X=xD7UlzO!>g*^Zm?Rw{k;Fz zJdWybXjoBqusE5$z*;e{eez)U1`E9eEcmol>(o7wl7ClF!3-uT?GAb|>zZ|x zm!IpZXd+J$2x_8^0o(c&Z-6n1ArdC96*I-m*mI5Bzy0C}m0>yz7Z;7|kxJ;o9iTq>bM0JD z0hWLJzwEP9r zkH}`<@Gb@aw0w+F(tU+}P+hU#8u}MJfFx-i>{i1X?_hAb{fa)|Vg(-fgU19O_yZt+ z9170B9})S(_+PRRETM*w*|U-UkZDlB@I@yE25PL!!IXD4HxRdiIOZ44jKaAKuD za*AfVPyU?picnD8avw>~jFFOMrwv5S-DS}W2#5ke1i|nRItU80#|)|mhf^6{81%Wq zk!!8J5p=rToSUz2jwdE2lz3x|q9SB9z*p3u%$tD_{@V|v47*lSgMvI+!}fiQ(W_|L zEDgsTMcXjyb(u)_#2yjY@+*FpR3bK1>QtkCN&`K+RHUZ&?1SfwmdDU8|GT^W2K#*= z!v#B6=8p%g0w!H`&bYAYO2EO))AgFcj1z#7gH?B;(cm3Gph$qx|9BjU+V#eqaI|pg zV$)&qeN&+$q5P|`(Iy=|?FZxWa$`?0-FVisZ_o?_&HON9g#M%H6~l4 z9qC;*sHgWT(r^h{-w@tz0)IGpVfOt;_0LZg=FxPkvT#H2Ogv$QtLvi{S{!RkZrdq} zeU`@UQS6@K((l!Y^aH7Qulf#OMM?zIqPe-bi!n+M0M|=a@oa*F|CMx;WD4ntVTyNX z?s15x*^Q4awaZQ#>FRH%lL^6!;5!AdFdIg z>K5V{++*N6WIyb3cYW(wa!O}mc|}uE9{4`GmcsCX40O2$8kwchdScz3*U-~Ny^joP zA_vOJ>Y6EC@C?gVP7!0Ei*BFZO2*1p*3v@*2O9Ea$&{zz!Usyjr^l#h%l-ddPK*w^D49*$P(50S$}XuM z#YJ;(tfbKGO0L^3d_I(p9t0mvl8ep3Afl4GSQ$>WBP`@a*1a0>?R>v~ZL1n;8XB0? z5FbP_)f8JhsB!jvS|jOqhBP{JI9fGQBF&Q2_}9=1;+AZSN5{k{;PXRrV;YuChOjHL z>YOF$iqVq#9ye#Q3P&~r>Q|_s#j$+t>&ycfZNkeaQ^-w&cy2jlINh8FM8gw%tMwOi z7xhc`*Ed+MH^W%y$S(N>tLPw`!KiJgNu=4AIH*%?WOBi$2Jee@MuudiD_%b(`!qi9 z6eWTlkd;Nid1MiWhEzni78d62Q_9YjK$#jHMN5ZwhAwg;wSez!xdOYeAdopUui>>A zirFd>lth}eXt?u;Ls1^tO4c@K9TEvBPJ?wlfO))}mpVw;nU&Hr?&Kb1OJf_<+K15f zWJz1O%#o0ELwSv{))Y@YiC^mpeEFU*XDVE2QnY zpN)~p#W!K&q{%8u**qW=WpMIz;njMpU$V5jsJXK@c%V$ZYFd7@yh>tSWWC}6R~K9b zAAiOs_WbBJ7P9|HYr)EhGf_q%$@;`z#+Lrdr`_d&=b|m@qqF)rm$9Bq_I4@jx{iwO z-sT;t8fG1%$fsO84@TCd<~*kY(2LpOJRqMazmY5g=yb8xVuoZK}s#o-(~_M#S+T@coM zw1r+!FjBOnHK*6C39Go5tmcWjFG=0FGW1)VQ#F2UOMb!?mrYsli*S!?fr^wDF9I%l z)M>6TX)I!4<%7Wk7sDbgQFhA0Ppv4cTc&-33`U^bFGgA8N1l=N;7++j^OU=;kE|Nn zIH&0C5dj1>KRD8J;^r%yblT98uZ2ik)rmJgf z0X@^Yl};zGXd&afGR&mI?~CH1?isXnSkcDy;| zMz%P@o}{dsuQGY4n;MsQJ~kYL{^J4ipn#qPmkpRyL1AGv$+*XPB|`= zY7Ye!QARCzns8E3_p5?`K%qz^XK>?yUtgR0JJ)6aBDp#Ps{_ z@kR9`BXu1`HXe3!iLu2+1=$|mjA$DzvYNcv@L-dB;^OBbH3r8JN;jec2)$DeecP0G zT|3!(VBhMkXg7F2F0-HEdcd|;DZxFy_o(6aZ}BhmXlo8EQ#yL|NOUXsAK_2J*%xNJ zd(;_SMZ=nA`x;Be0Fp6Nr2wFyG8tM8OuwDz8_Y?IC~Up}Ku#|CRfhsP6es?Uf)fWV zp%2Tf_5BUUue=}Z^(LTB=@gtd_+*@~I=-uaCódigo
Producto / Servicio
-
Cantidad
-
U. Medida
-
Precio Unit.
-
% Bonif
-
Imp. Bonif.
+
Cantidad
+ +
Precio Unit.
+
Subtotal
<% top = 293 %> <% @line_items.each_with_index do |line_item, index| %>
<%= (index + 1).to_s.rjust(3, "0") %>
<%= line_item.name %>
-
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
-
unidades
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
-
0,00
-
0,00
+
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
+ +
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
<% top += 15 %> <% end %> diff --git a/lib/afip_bill/views/notes/nota_a.html.erb b/lib/afip_bill/views/notes/nota_a.html.erb index e318761..37ea776 100644 --- a/lib/afip_bill/views/notes/nota_a.html.erb +++ b/lib/afip_bill/views/notes/nota_a.html.erb @@ -3,10 +3,10 @@
Alicuota
Código
Producto / Servicio
-
Cantidad
-
U. medida
-
Precio Unit.
-
% Bonif
+
Cant.
+ +
Precio Unit.
+
Subtotal
Subtotal c/IVA
IVA
@@ -15,10 +15,10 @@ <% @line_items.each_with_index do |line_item, index| %>
<%= (index + 1).to_s.rjust(3, "0") %>
<%= line_item.name %>
-
<%= line_item.quantity.to_s.tr(".", ",") %>
-
unidades
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
-
0,00
+
<%= line_item.quantity.to_s.tr(".", ",") %>
+ +
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
<%= line_item.iva %>%
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
diff --git a/lib/afip_bill/views/notes/nota_b.html.erb b/lib/afip_bill/views/notes/nota_b.html.erb index 819d2f0..6abeb7e 100644 --- a/lib/afip_bill/views/notes/nota_b.html.erb +++ b/lib/afip_bill/views/notes/nota_b.html.erb @@ -2,22 +2,22 @@
Código
Producto / Servicio
-
Cantidad
-
U. Medida
-
Precio Unit.
-
% Bonif
-
Imp. Bonif.
+
Cantidad
+ +
Precio Unit.
+ +
Subtotal
<% top = 293 %> <% @line_items.each_with_index do |line_item, index| %>
<%= (index + 1).to_s.rjust(3, "0") %>
<%= line_item.name %>
-
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
-
unidades
-
<%= line_item.imp_unitario.round(2).to_s.tr(".", ",") %>
-
0,00
-
0,00
+
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
+ +
<%= line_item.imp_unitario.round(2).to_s.tr(".", ",") %>
+ +
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
<% top += 25 %> <% end %> diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index b3b0435..02bd7a4 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -163,7 +163,7 @@
<%= header_text %>
<%= bill_type.upcase %>
-
<%= bill_name.upcase %>
+
<%= bill_name.upcase %>
<% if AfipBill.configuration[:logo_path].present? %>
From 2e7640390116cb577fea783d9ef61f906c040b6d Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 17 Jan 2019 19:29:09 -0300 Subject: [PATCH 21/34] css fix in client address --- lib/afip_bill/views/shared/_factura_header.html.erb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 02bd7a4..8cd7a90 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -214,5 +214,14 @@
<%= bill_type == "a" ? user.company_name : user.owner_name %>
Condición frente al IVA:
<%= user.tax_category %>
-
Domicilio Comercial: <%= user.address %>
+ +
+ Domicilio Comercial: +
+
+ + <%= user.address %> + +
+
Condición de venta: <%= afip_bill["cond_venta"] %>
From 1ae14b3a978f7e4e0e59c2b259c11707b3182810 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 21 Jan 2019 13:25:47 -0300 Subject: [PATCH 22/34] adding code parameter to line item --- lib/afip_bill/line_item.rb | 5 +++-- lib/afip_bill/views/bills/factura_a.html.erb | 6 ++++-- lib/afip_bill/views/bills/factura_b.html.erb | 6 ++++-- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/afip_bill/line_item.rb b/lib/afip_bill/line_item.rb index 4cc013d..f5393f1 100644 --- a/lib/afip_bill/line_item.rb +++ b/lib/afip_bill/line_item.rb @@ -1,12 +1,13 @@ module AfipBill class LineItem - attr_reader :name, :quantity, :imp_unitario, :iva + attr_reader :name, :quantity, :imp_unitario, :iva, :code - def initialize(name, quantity, imp_unitario, iva=21) + def initialize(name, quantity, imp_unitario, iva=21, code=nil) @name = name @quantity = quantity @imp_unitario = imp_unitario @iva = iva + @code = code end def imp_total_unitario diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index a21c465..c892097 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -12,8 +12,10 @@
IVA
<% top = 283 %> -<% @line_items.each_with_index do |line_item, index| %> -
<%= (index + 1).to_s.rjust(3, "0") %>
+<% @line_items.each_with_index do |line_item, index| + item_code = line_item.code || index + 1 + %> +
<%= item_code.to_s.rjust(3, "0") %>
<%= line_item.name %>
<%= line_item.quantity.to_s.tr(".", ",") %>
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 2617dde..0caa22c 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -10,8 +10,10 @@
Subtotal
<% top = 293 %> - <% @line_items.each_with_index do |line_item, index| %> -
<%= (index + 1).to_s.rjust(3, "0") %>
+ <% @line_items.each_with_index do |line_item, index| + item_code = line_item.code || index + 1 + %> +
<%= item_code.to_s.rjust(3, "0") %>
<%= line_item.name %>
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
From e6bf0dd2a9c6f2445b29cfe522f44a8803056f6b Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 23 Jan 2019 09:58:59 -0300 Subject: [PATCH 23/34] small codefix --- lib/afip_bill/views/bills/factura_a.html.erb | 4 ++-- lib/afip_bill/views/bills/factura_b.html.erb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index c892097..4ad64c5 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -13,9 +13,9 @@ <% top = 283 %> <% @line_items.each_with_index do |line_item, index| - item_code = line_item.code || index + 1 + item_code = line_item.code || (index + 1).to_s.rjust(3, "0") %> -
<%= item_code.to_s.rjust(3, "0") %>
+
<%= item_code %>
<%= line_item.name %>
<%= line_item.quantity.to_s.tr(".", ",") %>
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 0caa22c..415a5f9 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -11,9 +11,9 @@ <% top = 293 %> <% @line_items.each_with_index do |line_item, index| - item_code = line_item.code || index + 1 + item_code = line_item.code || (index + 1).to_s.rjust(3, "0") %> -
<%= item_code.to_s.rjust(3, "0") %>
+
<%= item_code %>
<%= line_item.name %>
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
From 4c9ad82ab1a7dc55b9dc3c375dc746f422075303 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 30 Jan 2019 18:35:21 -0300 Subject: [PATCH 24/34] gaining more space for companies bank information --- lib/afip_bill/assets/images/factura_a.jpg | Bin 26510 -> 34244 bytes lib/afip_bill/views/bills/factura_a.html.erb | 34 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/afip_bill/assets/images/factura_a.jpg b/lib/afip_bill/assets/images/factura_a.jpg index ee69ba1e09395fdb5f21733045f5fa46e9f59171..5b20011dce52ee88ff15cc64750a7ffa9db5f96d 100644 GIT binary patch literal 34244 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 SSI4|e`bifn$5%*Le|oP>?&KLlr2i79(y5? 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

077_wiQ%oOw-5=l)CImvb_W_Z&2x&0eBS`?o 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 i8%A}$%$+-4

-
Otros Tributos
-
Descripción
-
Detalle
-
Alíc. %
-
Importe
-
Per./Ret. de Impuesto a las Ganancias
-
0,00
-
Per./Ret. de IVA
-
0,00
+
Otros Tributos
+
Descripción
+
Detalle
+
Alíc. %
+
Importe
+
Per./Ret. de Impuesto a las Ganancias
+
0,00
+
Per./Ret. de IVA
+
0,00
Importe Neto Gravado: $
<%= afip_bill["imp_neto"] %>
-
Per./Ret. Ingresos Brutos
-
0,00
+
Per./Ret. Ingresos Brutos
+
0,00
IVA 27%: $
0,00
-
Impuestos Internos
-
0,00
-
Impuestos Municipales
-
0,00
+
Impuestos Internos
+
0,00
+
Impuestos Municipales
+
0,00
IVA 21%: $
<%= afip_bill["imp_iva_21"] %>
-
Importe Otros Tributos: $
-
0,00
+
Importe Otros Tributos: $
+
0,00
IVA 10.5%: $
<%= afip_bill["imp_iva_105"] %>
IVA 5%: $
From 3923eeb6182fc19ab607b0024f2d010c60c22ede Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 30 Jan 2019 18:35:39 -0300 Subject: [PATCH 25/34] lines number formating --- lib/afip_bill/views/bills/factura_a.html.erb | 12 ++++++++---- lib/afip_bill/views/bills/factura_b.html.erb | 6 ++++-- lib/afip_bill/views/notes/nota_a.html.erb | 15 ++++++++++----- lib/afip_bill/views/notes/nota_b.html.erb | 9 ++++++--- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index 4493e59..c16849d 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -14,16 +14,20 @@ <% top = 283 %> <% @line_items.each_with_index do |line_item, index| item_code = line_item.code || (index + 1).to_s.rjust(3, "0") + precio_unitario = ('%.2f' % line_item.imp_unitario).to_s.tr(".", ",") + subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") + alic_iva = ('%.2f' % line_item.iva).to_s.tr(".", ",") + subtotal_con_iva = ('%.2f' % line_item.imp_total_unitario_con_iva).to_s.tr(".", ",") %>
<%= item_code %>
<%= line_item.name %>
<%= line_item.quantity.to_s.tr(".", ",") %>
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= precio_unitario %>
-
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
-
<%= line_item.iva %>%
-
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
+
<%= subtotal %>
+
<%= alic_iva %>%
+
<%= subtotal_con_iva %>
<% top += 15 %> <% end %> diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 415a5f9..7eadfe4 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -12,15 +12,17 @@ <% top = 293 %> <% @line_items.each_with_index do |line_item, index| item_code = line_item.code || (index + 1).to_s.rjust(3, "0") + precio_unitario = ('%.2f' % line_item.imp_unitario).to_s.tr(".", ",") + subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") %>
<%= item_code %>
<%= line_item.name %>
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= precio_unitario %>
-
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
+
<%= subtotal %>
<% top += 15 %> <% end %> diff --git a/lib/afip_bill/views/notes/nota_a.html.erb b/lib/afip_bill/views/notes/nota_a.html.erb index 37ea776..d8e1ded 100644 --- a/lib/afip_bill/views/notes/nota_a.html.erb +++ b/lib/afip_bill/views/notes/nota_a.html.erb @@ -12,16 +12,21 @@
IVA
<% top = 283 %> -<% @line_items.each_with_index do |line_item, index| %> +<% @line_items.each_with_index do |line_item, index| + precio_unitario = ('%.2f' % line_item.imp_unitario).to_s.tr(".", ",") + subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") + alic_iva = ('%.2f' % line_item.iva).to_s.tr(".", ",") + subtotal_con_iva = ('%.2f' % line_item.imp_total_unitario_con_iva).to_s.tr(".", ",") + %>
<%= (index + 1).to_s.rjust(3, "0") %>
<%= line_item.name %>
<%= line_item.quantity.to_s.tr(".", ",") %>
-
<%= line_item.imp_unitario.to_s.tr(".", ",") %>
+
<%= precio_unitario %>
-
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
-
<%= line_item.iva %>%
-
<%= line_item.imp_total_unitario_con_iva.round(2).to_s.tr(".", ",") %>
+
<%= subtotal %>
+
<%= alic_iva %>%
+
<%= subtotal_con_iva %>
<% top += 25 %> <% end %> diff --git a/lib/afip_bill/views/notes/nota_b.html.erb b/lib/afip_bill/views/notes/nota_b.html.erb index 6abeb7e..e877b05 100644 --- a/lib/afip_bill/views/notes/nota_b.html.erb +++ b/lib/afip_bill/views/notes/nota_b.html.erb @@ -10,15 +10,18 @@
Subtotal
<% top = 293 %> - <% @line_items.each_with_index do |line_item, index| %> + <% @line_items.each_with_index do |line_item, index| + precio_unitario = ('%.2f' % line_item.imp_unitario).to_s.tr(".", ",") + subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") + %>
<%= (index + 1).to_s.rjust(3, "0") %>
<%= line_item.name %>
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
-
<%= line_item.imp_unitario.round(2).to_s.tr(".", ",") %>
+
<%= precio_unitario %>
-
<%= line_item.imp_total_unitario.round(2).to_s.tr(".", ",") %>
+
<%= subtotal %>
<% top += 25 %> <% end %> From 297917576e517fed0cfeadad52ccb765553537be Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 14 Feb 2019 17:18:55 -0300 Subject: [PATCH 26/34] adjusting totals in notes A with new template image --- lib/afip_bill/views/notes/nota_a.html.erb | 40 +++++++++++------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/lib/afip_bill/views/notes/nota_a.html.erb b/lib/afip_bill/views/notes/nota_a.html.erb index d8e1ded..59e6a8d 100644 --- a/lib/afip_bill/views/notes/nota_a.html.erb +++ b/lib/afip_bill/views/notes/nota_a.html.erb @@ -30,31 +30,31 @@ <% top += 25 %> <% end %> -
Otros Tributos
-
Descripción
-
Detalle
-
Alíc. %
-
Importe
-
Per./Ret. de Impuesto a las Ganancias
-
0,00
-
Per./Ret. de IVA
-
0,00
+
Otros Tributos
+
Descripción
+
Detalle
+
Alíc. %
+
Importe
+
Per./Ret. de Impuesto a las Ganancias
+
0,00
+
Per./Ret. de IVA
+
0,00
Importe Neto Gravado: $
<%= afip_bill["imp_neto"] %>
-
Per./Ret. Ingresos Brutos
-
0,00
+
Per./Ret. Ingresos Brutos
+
0,00
IVA 27%: $
0,00
-
Impuestos Internos
-
0,00
-
Impuestos Municipales
-
0,00
+
Impuestos Internos
+
0,00
+
Impuestos Municipales
+
0,00
IVA 21%: $
-
<%= afip_bill["imp_iva_21"] || '0,00' %>
-
Importe Otros Tributos: $
-
0,00
-
IVA 10.5%: $
-
<%= afip_bill["imp_iva_105"] || '0,00' %>
+
<%= afip_bill["imp_iva_21"] %>
+
Importe Otros Tributos: $
+
0,00
+
IVA 10.5%: $
+
<%= afip_bill["imp_iva_105"] %>
IVA 5%: $
0,00
IVA 2.5%: $
From 84e38ff64568f2747e73e4f2b7cb1f51b4845ca8 Mon Sep 17 00:00:00 2001 From: Gaston Nan Date: Sun, 3 Mar 2019 20:05:24 -0300 Subject: [PATCH 27/34] ganing code space from amount and using smaller font when code too long --- lib/afip_bill/assets/images/factura_a.jpg | Bin 34244 -> 36041 bytes lib/afip_bill/assets/images/factura_b.jpg | Bin 27475 -> 35550 bytes lib/afip_bill/assets/images/factura_c.jpg | Bin 27475 -> 35550 bytes lib/afip_bill/generator.rb | 12 ++++---- lib/afip_bill/views/bills/factura_a.html.erb | 28 +++++++++---------- lib/afip_bill/views/bills/factura_b.html.erb | 23 ++++++++------- 6 files changed, 33 insertions(+), 30 deletions(-) diff --git a/lib/afip_bill/assets/images/factura_a.jpg b/lib/afip_bill/assets/images/factura_a.jpg index 5b20011dce52ee88ff15cc64750a7ffa9db5f96d..69c029f478f7efe13fb888d7de09cb7cec9aa866 100644 GIT binary patch literal 36041 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 NVHOGlvc+MY{|~gkmJk2{ literal 34244 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 XHKfV%N6ClUut)xfiq9;QBD($u42N!H literal 27475 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 XHKfV%N6ClUut)xfiq9;QBD($u42N!H literal 27475 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 { directory: 'bills', template: 'factura_a', doc_name: 'factura', doc_type: 'a' }, - '02' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de débito', doc_type: 'a' }, - '03' => { directory: 'notes', template: 'nota_a', doc_name: 'Nota de crédito', doc_type: 'a' }, + '02' => { directory: 'bills', template: 'factura_a', doc_name: 'Nota de débito', doc_type: 'a' }, + '03' => { directory: 'bills', template: 'factura_a', doc_name: 'Nota de crédito', doc_type: 'a' }, '06' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'b' }, - '07' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de débito', doc_type: 'b' }, - '08' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de crédito', doc_type: 'b' }, + '07' => { directory: 'bills', template: 'factura_b', doc_name: 'Nota de débito', doc_type: 'b' }, + '08' => { directory: 'bills', template: 'factura_b', doc_name: 'Nota de crédito', doc_type: 'b' }, '11' => { directory: 'bills', template: 'factura_b', doc_name: 'factura', doc_type: 'c' }, - '12' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de débito', doc_type: 'c' }, - '13' => { directory: 'notes', template: 'nota_b', doc_name: 'Nota de crédito', doc_type: 'c' } + '12' => { directory: 'bills', template: 'factura_b', doc_name: 'Nota de débito', doc_type: 'c' }, + '13' => { directory: 'bills', template: 'factura_b', doc_name: 'Nota de crédito', doc_type: 'c' } }.freeze IVA = 21.freeze DEFAULTS = { diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index c16849d..a9feff8 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -1,33 +1,33 @@ <%= @template_header %> -
Alicuota
Código
-
Producto / Servicio
-
Cant.
+
Producto / Servicio
+
Cant.
-
Precio Unit.
+
Precio Unit.
-
Subtotal
-
Subtotal c/IVA
-
IVA
+
Subtotal
+
Alicuota
IVA
+
Subtotal
c/IVA
<% top = 283 %> <% @line_items.each_with_index do |line_item, index| item_code = line_item.code || (index + 1).to_s.rjust(3, "0") + small_code = item_code.length > 8 precio_unitario = ('%.2f' % line_item.imp_unitario).to_s.tr(".", ",") subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") alic_iva = ('%.2f' % line_item.iva).to_s.tr(".", ",") subtotal_con_iva = ('%.2f' % line_item.imp_total_unitario_con_iva).to_s.tr(".", ",") %> -
<%= item_code %>
-
<%= line_item.name %>
-
<%= line_item.quantity.to_s.tr(".", ",") %>
+
"><%= item_code %>
+
<%= line_item.name %>
+
<%= line_item.quantity.to_s.tr(".", ",") %>
-
<%= precio_unitario %>
+
<%= precio_unitario %>
-
<%= subtotal %>
-
<%= alic_iva %>%
-
<%= subtotal_con_iva %>
+
<%= subtotal %>
+
<%= alic_iva %>%
+
<%= subtotal_con_iva %>
<% top += 15 %> <% end %> diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 7eadfe4..410ab30 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -1,28 +1,31 @@ <%= @template_header %>
Código
-
Producto / Servicio
-
Cantidad
+
Producto / Servicio
+
Cant.
-
Precio Unit.
+
Precio Unit.
-
Subtotal
+
Subtotal
-<% top = 293 %> +<% top = 288 %> <% @line_items.each_with_index do |line_item, index| item_code = line_item.code || (index + 1).to_s.rjust(3, "0") + small_code = item_code.length > 8 precio_unitario = ('%.2f' % line_item.imp_unitario).to_s.tr(".", ",") subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") %> -
<%= item_code %>
-
<%= line_item.name %>
-
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
+
+ "><%= item_code %> +
+
<%= line_item.name %>
+
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
-
<%= precio_unitario %>
+
<%= precio_unitario %>
-
<%= subtotal %>
+
<%= subtotal %>
<% top += 15 %> <% end %> From 8eab777fe4bacf4266994f8bf8a7926256f7a80a Mon Sep 17 00:00:00 2001 From: Gaston Nan Date: Sun, 3 Mar 2019 20:25:49 -0300 Subject: [PATCH 28/34] quantity position fix in b template --- lib/afip_bill/views/bills/factura_b.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index 410ab30..e2ebad3 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -20,7 +20,7 @@ "><%= item_code %>
<%= line_item.name %>
-
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
+
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
<%= precio_unitario %>
<%= precio_unitario %>
diff --git a/lib/afip_bill/views/bills/factura_b.html.erb b/lib/afip_bill/views/bills/factura_b.html.erb index e2ebad3..a7961e6 100644 --- a/lib/afip_bill/views/bills/factura_b.html.erb +++ b/lib/afip_bill/views/bills/factura_b.html.erb @@ -19,7 +19,7 @@
"><%= item_code %>
-
<%= line_item.name %>
+
<%= line_item.name %>
<%= line_item.quantity.round(2).to_s.tr(".", ",") %>
<%= precio_unitario %>
From c0b12f8814edaf569d55a52cbf2b788ebdfa6e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gast=C3=B3n=20Nan?= Date: Mon, 28 Sep 2020 23:10:58 -0300 Subject: [PATCH 30/34] related invoice data for notes --- lib/afip_bill/views/shared/_factura_header.html.erb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index 8cd7a90..ee17d04 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -225,3 +225,14 @@
Condición de venta: <%= afip_bill["cond_venta"] %>
+ + <%if afip_bill["related_invoice"].present? %> +
+ Fac. <%= afip_bill["related_invoice"]["type"].upcase %>: +
+
+ + <%= afip_bill["related_invoice"]["number"] %> + +
+ <%end%> From 86c8ff35f9c0f943db0d46dbbe25d934a13aa9e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Sun, 28 Feb 2021 17:27:23 -0300 Subject: [PATCH 31/34] Reorganized footer to display AFIP QR code --- .../views/shared/_factura_footer.html.erb | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/lib/afip_bill/views/shared/_factura_footer.html.erb b/lib/afip_bill/views/shared/_factura_footer.html.erb index 8c8544a..f76c35d 100644 --- a/lib/afip_bill/views/shared/_factura_footer.html.erb +++ b/lib/afip_bill/views/shared/_factura_footer.html.erb @@ -1,16 +1,39 @@
Pág. 1/1
Comprobante Autorizado
-
CAE N°: <%= afip_bill["cae"] %>
+
Esta Administración Federal no se responsabiliza por los datos ingresados en el detalle de la operación
-
Fecha de Vto. de CAE:
-
<%= Date.parse(afip_bill["fch_vto_cae"]).strftime("%d/%m/%Y") %>
-
<%= barcode.data %>
-
- <%= barcode.to_html %> +
+ CAE N°:
+ <%= afip_bill["cae"] %>
+
Fecha de Vto. de CAE:
+ +
+ <%= Date.parse(afip_bill["fch_vto_cae"]).strftime("%d/%m/%Y") %>
+ +
<%= barcode.data %>
+
+ <%= barcode.to_html %> +
+ +<% if afip_bill["qr_png"] %> +
+ "> +
+<% end %> + + + From 866350e4a94284b6914366494d24ce0c0bb82999 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Sun, 28 Feb 2021 17:29:57 -0300 Subject: [PATCH 32/34] removed trash css --- lib/afip_bill/views/shared/_factura_footer.html.erb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lib/afip_bill/views/shared/_factura_footer.html.erb b/lib/afip_bill/views/shared/_factura_footer.html.erb index f76c35d..a247768 100644 --- a/lib/afip_bill/views/shared/_factura_footer.html.erb +++ b/lib/afip_bill/views/shared/_factura_footer.html.erb @@ -26,14 +26,5 @@
<% end %> - - From c9ffb24c884a53b2d391f652b7861ab4132880ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Mon, 5 Jul 2021 13:11:25 -0300 Subject: [PATCH 33/34] Addes header_obs to invoices (remit number etc) --- lib/afip_bill/views/shared/_factura_header.html.erb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/afip_bill/views/shared/_factura_header.html.erb b/lib/afip_bill/views/shared/_factura_header.html.erb index ee17d04..ec78e0e 100644 --- a/lib/afip_bill/views/shared/_factura_header.html.erb +++ b/lib/afip_bill/views/shared/_factura_header.html.erb @@ -226,6 +226,10 @@
Condición de venta: <%= afip_bill["cond_venta"] %>
+ <% if afip_bill["header_obs"].present? %> +
<%= afip_bill["header_obs"].split(":").first %>: <%= afip_bill["header_obs"].split(":").second %>
+ <% end %> + <%if afip_bill["related_invoice"].present? %>
Fac. <%= afip_bill["related_invoice"]["type"].upcase %>: From 728d7150dba54d16184ceaf2cca85b5023e56d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Cerrini?= Date: Fri, 10 Sep 2021 15:48:36 -0300 Subject: [PATCH 34/34] Added invoice discounts mode --- lib/afip_bill.rb | 3 +- lib/afip_bill/line_item.rb | 7 ++-- lib/afip_bill/views/bills/factura_a.html.erb | 34 +++++++++++++++++--- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/lib/afip_bill.rb b/lib/afip_bill.rb index 192f2a6..48cd8b9 100644 --- a/lib/afip_bill.rb +++ b/lib/afip_bill.rb @@ -16,7 +16,8 @@ def self.configuration ingresos_brutos: nil, iva: nil, sale_point: nil, - logo_path: nil + logo_path: nil, + invoice_discounts_mode: nil } end end diff --git a/lib/afip_bill/line_item.rb b/lib/afip_bill/line_item.rb index f5393f1..94a9d9d 100644 --- a/lib/afip_bill/line_item.rb +++ b/lib/afip_bill/line_item.rb @@ -1,13 +1,16 @@ module AfipBill class LineItem - attr_reader :name, :quantity, :imp_unitario, :iva, :code + attr_reader :name, :quantity, :imp_unitario, :iva, :code, :discount_percentage1, :discount_percentage2, :base_price - def initialize(name, quantity, imp_unitario, iva=21, code=nil) + def initialize(name, quantity, imp_unitario, iva=21, code=nil, discount_percentage1=nil, discount_percentage2=nil, base_price=nil) @name = name @quantity = quantity @imp_unitario = imp_unitario @iva = iva @code = code + @discount_percentage1 = discount_percentage1 + @discount_percentage2 = discount_percentage2 + @base_price = base_price end def imp_total_unitario diff --git a/lib/afip_bill/views/bills/factura_a.html.erb b/lib/afip_bill/views/bills/factura_a.html.erb index f58f636..d0f03eb 100644 --- a/lib/afip_bill/views/bills/factura_a.html.erb +++ b/lib/afip_bill/views/bills/factura_a.html.erb @@ -5,12 +5,20 @@
Cant.
Precio Unit.
- -
Subtotal
-
Alicuota
IVA
-
Subtotal
c/IVA
+ +<% unless AfipBill.configuration[:invoice_discounts_mode].present? %> + +
Subtotal
+
Alicuota
IVA
+
Subtotal
c/IVA
+<% else %> +
Bonif 1
+
Bonif 2
+
Subtotal
s/IVA
+<% end %> <% top = 283 %> + <% @line_items.each_with_index do |line_item, index| item_code = line_item.code || (index + 1).to_s.rjust(3, "0") small_code = item_code.length > 8 @@ -18,16 +26,34 @@ subtotal = ('%.2f' % line_item.imp_total_unitario).to_s.tr(".", ",") alic_iva = ('%.2f' % line_item.iva).to_s.tr(".", ",") subtotal_con_iva = ('%.2f' % line_item.imp_total_unitario_con_iva).to_s.tr(".", ",") + + if AfipBill.configuration[:invoice_discounts_mode].present? + #monto_descuento = ('%.2f' % line_item.discount_value).to_s.tr(".", ",") + perc_descuento1 = line_item.discount_percentage1 + perc_descuento2 = line_item.discount_percentage2 + precio_base = line_item.base_price + end %>
"><%= item_code %>
<%= line_item.name %>
<%= line_item.quantity.to_s.tr(".", ",") %>
+ + +<% unless AfipBill.configuration[:invoice_discounts_mode].present? %>
<%= precio_unitario %>
<%= subtotal %>
<%= alic_iva %>%
<%= subtotal_con_iva %>
+<% else %> +
<%= precio_base %>
+
<%= perc_descuento1 %>%
+
<%= perc_descuento2 %>%
+
<%= subtotal %>
+<% end %> + + <% top += 15 %> <% end %>