cfdi_gpi.pdf.erb 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <div class='pdf-body' style="margin:50px;">
  2. <header class='document-header'>
  3. </header>
  4. <section>
  5. <article class="left-left logo" style="height:100px; width: 50%;margin-top: 2cm;">
  6. <% if user.pointsale.img_pointsale? %>
  7. <%= wicked_pdf_image_tag user.pointsale.img_pointsale_url, { width: 300, height: 80 } %>
  8. <% end %>
  9. </article>
  10. <article style="width: 40%;float: right;text-align: right; margin-top: 2cm;">
  11. <p style="margin: 5px; font-size: 14px; color: red;"><b>FACTURA</b></p>
  12. <p style="margin: 5px; font-size: 11px;">Tipo de comprobante:&nbsp;<b><%= Rails.application.config.issuing['CveIngreso'].to_s %></b></p>
  13. <p style="margin: 5px; font-size: 11px;">Serie: <b><%= doc.xpath("//@Serie")%></b> Folio: <b><%= doc.xpath("//@Folio")%></b></p>
  14. <p style="margin: 5px; font-size: 11px;">Folio Fiscal (UUID):</b></p>
  15. <p style="margin: 5px; font-size: 11px;"><b><%= doc.xpath("//cfdi:Complemento//@UUID")%></b></p>
  16. <p style="margin: 5px; font-size: 11px;">No. de Serie del Certificado del CSD:</p>
  17. <p style="margin: 5px; font-size: 11px;"><b><%= doc.xpath("//@NoCertificadoSAT") %></b></p>
  18. <p style="margin: 5px; font-size: 11px;">C.P., fecha y hora de emision: </p>
  19. <p style="margin: 5px; font-size: 11px;"><b><%= "#{doc.xpath('//cfdi:Comprobante/@LugarExpedicion')}, #{doc.xpath('//cfdi:Comprobante/@Fecha')}" %></b></p>
  20. <p style="margin: 5px; font-size: 11px;">Id. Usu. - Usuario </p>
  21. <p style="margin: 5px; font-size: 11px;"><b><%= "#{user.id} - #{user.first_name} #{user.last_name}" %></b></p>
  22. </article>
  23. </section>
  24. <section style="margin-bottom: 5px;">
  25. <article style="width: 40%;">
  26. <fieldset style="border-color: #f2f2f2;"><legend><b>Emisor</b></legend>
  27. <p style="margin: 5px; font-size: 10px;"><b><%= doc.xpath("//cfdi:Emisor/@Rfc")%></b></p>
  28. <p style="margin: 5px; font-size: 10px;"><%= doc.xpath('//cfdi:Emisor/@Nombre') %></p>
  29. <p style="margin: 5px; font-size: 10px;"><b><%= "#{doc.xpath('//cfdi:Emisor/@RegimenFiscal')} - #{Rails.application.config.issuing['regimenFiscal']}"%></b></p>
  30. </fieldset>
  31. </article>
  32. <article style="width: 40%;">
  33. <fieldset style="border-color: #f2f2f2;"><legend><b>Receptor</b></legend>
  34. <p style="margin: 5px; font-size: 10px;"><b><%= doc.xpath("//cfdi:Receptor/@Rfc")%></b></p>
  35. </fieldset>
  36. </article>
  37. </section>
  38. <section class="products" style="height: auto;">
  39. <table cellspacing="0" class="table">
  40. <thead>
  41. <tr>
  42. <th style="text-align:center;font-weight:bold;width:5%;font-size:10px; padding: 2px;">Clave Prod.</th>
  43. <th style="text-align:center;font-weight:bold;width:5%;font-size:10px; padding: 2px;">Cantidad</th>
  44. <th style="text-align:center;font-weight:bold;width:5%;font-size:10px; padding: 2px;">Unidad de medida</th>
  45. <th style="text-align:center;font-weight:bold;width:20%;font-size:10px; padding: 2px;">Descripcion</th>
  46. <th colspan="2" style="text-align:center;font-weight:bold;width:10%;font-size:10px; padding: 2px;">Impuesto</th>
  47. <th style="text-align:center;font-weight:bold;width:10%;font-size:10px; padding: 2px;">Precio unitario</th>
  48. <th style="text-align:center;font-weight:bold;width:10%;font-size:10px; padding: 2px;">Importe</th>
  49. </tr>
  50. </thead>
  51. <tbody>
  52. <% concepts.each do |concept| %>
  53. <tr>
  54. <td style="font-size: 9px;">
  55. <%= concept['ProductKey'] %>
  56. </td>
  57. <td style="font-size: 9px;">
  58. <%= concept['Quantity'] %>
  59. </td>
  60. <td style="font-size: 9px;">
  61. <%= concept['UnitKey'] %>
  62. </td>
  63. <td style="font-size: 9px; overflow:hidden;text-overflow:'';white-space:nowrap;max-width:200px;">
  64. <%= concept['Description'] %>
  65. </td>
  66. <td style="font-size: 9px;">
  67. <%= if concept['Tax'].to_f > 0.00; "002"; end; %>
  68. </td>
  69. <td style="font-size: 9px;">
  70. <%= if concept['Tax'].to_f > 0.00 ; "$#{concept["Tax"].to_s}"; end; %>
  71. </td>
  72. <td style="font-size: 9px;">
  73. <%= "$#{concept['Price']}" %>
  74. </td>
  75. <td style="font-size: 9px;">
  76. <%= "$#{concept['Amount']}" %>
  77. </td>
  78. </tr>
  79. <% end %>
  80. </tbody>
  81. </table>
  82. </section>
  83. <hr>
  84. <section style="word-wrap: break-word;">
  85. <article style="float:right;width: 17%;">
  86. <p style="text-align:right; margin: 5px;font-size: 9px; background-color: #f2f2f2;">$ <%= doc.xpath("//cfdi:Comprobante/@SubTotal") %></p>
  87. <p style="text-align:right; margin: 5px;font-size: 9px;">
  88. <%= "#{doc.xpath('//cfdi:Impuestos/@TotalImpuestosTrasladados')}" if "$#{doc.xpath('//cfdi:Impuestos/@TotalImpuestosTrasladados')}"%><br></p>
  89. <p style="text-align:right; margin: 5px;font-size: 9px; background-color: #f2f2f2;"><b>$<%= doc.xpath("//cfdi:Comprobante/@Total") %></b></p>
  90. </article>
  91. <article style="float:right; width: 10%;">
  92. <p style="text-align:right; margin: 5px; font-size: 9px;"><b>Subtotal:</b></p>
  93. <p style="text-align:right; margin: 5px; font-size: 9px;">IVA(16%):</p>
  94. <p style="text-align:right; margin: 5px; font-size:9px;"><b>Total:</b></p>
  95. </article>
  96. <article style="float:right; width: 40%;">
  97. <p style="font-size: 11px;"><b>Total con letra:</b></p>
  98. <% numeros = doc.xpath("//cfdi:Comprobante/@Total").to_s.split('.') %>
  99. <p style="font-size: 11px;">
  100. <%= "#{numeros[0].to_i.to_words.split.each { |x| x.capitalize! }.join(' ')} Pesos #{numeros[1]}/100 M.N." %>
  101. </p>
  102. </article>
  103. <article style="width: 30%;float:right;">
  104. <p style="font-size: 10px;"><%= "#{doc.xpath('//@MetodoPago')}: Pago en una sola exhibición" %></p>
  105. <% payment_method = PaymentMethod.find_by(payment_method_key: "#{doc.xpath('//cfdi:Comprobante/@FormaPago')}") %>
  106. <p style="font-size: 10px;"><%= "#{doc.xpath('//cfdi:Comprobante/@FormaPago')} - #{payment_method.method}" %> </p>
  107. </article>
  108. </section>
  109. <section style="word-wrap: break-word;">
  110. <article style="width: 100%;">
  111. <hr>
  112. <p style="font-size: 9px;"><br><b>Sello Digital del CFDI:</b><br><%= doc.xpath("//@SelloCFD") %></p>
  113. <p style="font-size: 9px;"><b>Sello del SAT:</b><br><%= doc.xpath("//@SelloSAT") %>
  114. </p>
  115. </article>
  116. </section>
  117. <section style="word-wrap: break-word;">
  118. <article style="float:left;width: 20%; padding-top: 10px;">
  119. <!-- < % wicked_pdf_image_tag("invoice_qr/qr_#{uuid}.png", width: "120", height: "120") %> -->
  120. <%= wicked_pdf_image_tag_qr("#{qr_path}", width: "120", height: "120") %>
  121. </article>
  122. <article style="float:left;width: 80%">
  123. <p style="font-size: 9px;">
  124. <b >Cadena Original del complemento de certificación digital del SAT:</b><br>
  125. <%= details %>
  126. </p>
  127. <p style="font-size: 9px;">
  128. <b>No de Serie del Certificado del SAT:</b> <%= doc.xpath("//@NoCertificadoSAT") %>
  129. </p>
  130. <p style="font-size: 9px;">
  131. <b>Fecha y hora de certificación:</b> <%= doc.xpath("//@FechaTimbrado") %>
  132. </p>
  133. </article>
  134. </section>
  135. <footer style="text-align:center;font-size:9px; margin-bottom: 3cm;">
  136. <b>Este documento es una representación impresa de un CFDI</b>
  137. </footer>
  138. </div>