Advertisement
Nonnatee

ERPNEXT_server-side_template_Print format

Aug 23rd, 2014
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 22.13 KB | None | 0 0
  1. <script>
  2.     function format_heading(str_heading, lang) {
  3.         var line = str_heading.toString();
  4.         line = line.split("/");
  5.  
  6.         if (lang == "en") {
  7.             return line[0];
  8.         } else if (lang == "th") {
  9.             return line[1];
  10.         }
  11.     }
  12.    
  13.     function ThaiBaht(Number, currency) {
  14.         var i;
  15.         var DecimalLen;
  16.         // Arrays of Thai words
  17.         var TxtNumArr = new Array("ศูนย์", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า", "สิบ");
  18.  
  19.         var TxtDigitArr = new Array("", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน", "สิบ", "ร้อย", "พัน", "หมื่น", "แสน", "ล้าน");
  20.  
  21.         var BahtText = "";
  22.  
  23.         // Remove Currency and Symbol
  24.         for (i = 0; i < Number.length; i++) {
  25.            Number = Number.replace(currency, "");
  26.            Number = Number.replace(",", ""); // Remove comma
  27.            Number = Number.replace(" ", ""); // Remove White-space
  28.            Number = Number.replace("บาท", ""); // Remove Baht in Thai
  29.            Number = Number.replace("฿", ""); // Remove Thai Currency Symbol
  30.        }
  31.  
  32.        //ตรวจสอบดูว่าใช่ตัวเลขที่ถูกต้องหรือเปล่า ด้วย isNaN == true ถ้าเป็นข้อความ == false ถ้าเป็นตัวเลข
  33.        if (isNaN(Number)) {
  34.            return "Invalid input data.";
  35.        } else {
  36.            // Max input validation.
  37.            if ((Number - 0) > 99999999.9999) {
  38.                 return "Input out of range. Max = 99999999.9999";
  39.             } else {
  40.                 // Split int & decimal.
  41.                Number = Number.toString();
  42.                 Number = Number.split(".");
  43.                 // Begin input parsing logic.
  44.                 if (Number[1].length > 0) {
  45.                     Number[1] = Number[1].substring(0, 2);
  46.                 }
  47.                 var NumberLen = Number[0].length - 0;
  48.                 var oldTmp = 0;
  49.                 for (i = 0; i < NumberLen; i++) {
  50.                    tmp = Number[0].substring(i, i + 1) - 0;
  51.                    if (tmp != 0) {
  52.                        if ((i == (NumberLen - 1) || i == (NumberLen - 7)) && (tmp == 1) && oldTmp != 0) {
  53.                            BahtText += "เอ็ด"; // special word for amount end with 1 eg. 11, 21,31,.....91
  54.                        } else
  55.                        if (((i == (NumberLen - 2)) && (tmp == 2)) || ((i == (NumberLen - 8)) && (tmp == 2))) {
  56.                            BahtText += "ยี่"; // special word for amount ranging in the twenty
  57.                        } else
  58.                        if (((i == (NumberLen - 2)) && (tmp == 1)) || ((i == (NumberLen - 8)) && (tmp == 1))) {
  59.                            BahtText += "";
  60.                        } else {
  61.                            BahtText += TxtNumArr[tmp];
  62.                        }
  63.                        BahtText += TxtDigitArr[NumberLen - i - 1];
  64.                    } else if ((i == (NumberLen - 7)) && (tmp == 0)) {
  65.                        BahtText += TxtDigitArr[NumberLen - i - 1];
  66.                    }
  67.                    oldTmp = tmp;
  68.                }
  69.                BahtText += "บาท"; // add "baht"
  70.                oldTmp = 0;
  71.                if ((Number[1] == "0") || (Number[1] == "00")) {
  72.                    BahtText += "ถ้วน"; // add "Only"
  73.                } else {
  74.                    DecimalLen = Number[1].length - 0;
  75.                    for (i = 0; i < DecimalLen; i++) {
  76.                        tmp = Number[1].substring(i, i + 1) - 0;
  77.                        if (tmp !== 0) {
  78.                            if ((i == (DecimalLen - 1)) && (tmp == 1) && oldTmp != 0) {
  79.                                BahtText += "เอ็ด"; // special word for amount end with 1 eg. 11, 21,31,.....91
  80.                            } else
  81.                            if ((i == (DecimalLen - 2)) && (tmp == 2)) {
  82.                                BahtText += "ยี่"; // special word for amount ranging in the twenty
  83.                            } else
  84.                            if ((i == (DecimalLen - 2)) && (tmp == 1)) {
  85.                                BahtText += "";
  86.                            } else {
  87.                                BahtText += TxtNumArr[tmp];
  88.                            }
  89.                            BahtText += TxtDigitArr[DecimalLen - i - 1];
  90.                        }
  91.                        oldTmp = tmp;
  92.                    }
  93.                    BahtText += "สตางค์"; // add "Satang" (cent eq)
  94.                }
  95.                return BahtText;
  96.            }
  97.        }
  98.    }
  99.  
  100. </script>
  101. <style>
  102.     /* style sheet for "A4" printing */
  103.     @media print {
  104.         #A5page {
  105.             page-break-after: always;
  106.         }
  107.     }
  108.     @media print and (width: 21cm) and (height: 29.7cm) {
  109.         @page {
  110.             margin: 2cm;
  111.         }
  112.     }
  113.     /* style sheet for "A5" printing */
  114.     #PDF_LetterHead {
  115.         width: 652px;
  116.     }
  117.     #pCompany_logo {
  118.         width: 140px;
  119.     }
  120.     body {
  121.         font-weight: 100;
  122.     }
  123.     .A5_paper {
  124.         break-after: always;
  125.         /*
  126.         width: 8.27in;
  127.         height: 5.83in;
  128.         */
  129.     }
  130.     .A4_paper {
  131.         height: 11.65in;
  132.     }
  133.     .page_divider {
  134.         margin-left: 50px;
  135.         margin-right: 50px;
  136.         margin-bottom: 20px;
  137.         margin-top: 0px;
  138.         color: lightgray;
  139.     }
  140.     .field_data {
  141.         text-align: left;
  142.         vertical-align: text-top;
  143.         font-size: 10px;
  144.         padding: 0px 0px 0px 0px;
  145.         font-weight: 100;
  146.     }
  147.     .field_label {
  148.         text-transform: uppercase;
  149.         text-align: left;
  150.         vertical-align: text-top;
  151.         font-size: 10px;
  152.         padding: 0px 0px 0px 0px;
  153.         width: 20%;
  154.         font-weight: 100;
  155.     }
  156.     .underline {
  157.         border-bottom: 1;
  158.         border-bottom-color: gray;
  159.         border-bottom-width: thin;
  160.     }
  161.     .div_label {
  162.         text-align: left;
  163.         vertical-align: text-top;
  164.         font-size: 10px;
  165.         padding: 0px 0px 0px 0px;
  166.         font-weight: 150;
  167.         text-transform: uppercase;
  168.     }
  169.     .div_data {
  170.         text-align: center;
  171.         vertical-align: middle;
  172.         font-size: 10px;
  173.         padding: 0px 0px 0px 0px;
  174.         font-weight: 100;
  175.     }
  176.     .fixtablelayout {
  177.         width: 100%;
  178.         border-collapse: collapse;
  179.         table-layout: fixed;
  180.         font-size: 10px;
  181.         font-weight: 100;
  182.         overflow: hidden;
  183.     }
  184.     table {
  185.         width: 100%;
  186.         border-collapse: collapse;
  187.         font-weight: 100;
  188.     }
  189.     p {
  190.         word-wrap: break-word;
  191.     }
  192.     tr {
  193.         line-height: 1;
  194.         overflow: hidden;
  195.     }
  196.     hr {
  197.         margin-top: 0px;
  198.         margin-bottom: 5px;
  199.     }
  200.     td {
  201.         font-weight: 100;
  202.         overflow: hidden;
  203.     }
  204.     .div_cLogo {
  205.         padding: 1px 0px 5px 0px;
  206.         vertical-align: text-top;
  207.         text-align: center;
  208.     }
  209.     .div_cBranch {
  210.         padding: 0px 0px 0px 0px;
  211.         vertical-align: middle;
  212.         text-align: center;
  213.         font-size: 8px;
  214.     }
  215.     .min_2px_hight {
  216.         min-height: 2px;
  217.         width: 100%;
  218.     }
  219.     .tr_doctype_label {
  220.         border-collapse: collapse;
  221.         border-radius: 5px 5px 5px 5px;
  222.         background-color: lightgray;
  223.         padding: 2px 0px 2px 0px;
  224.     }
  225.     .tbl_header {
  226.         text-align: center;
  227.     }
  228. </style>
  229. <div id="PDF_LetterHead">
  230.     <table width="100%" height="65" id="pDoc_header" cellpadding="0" cellspacing="0" border="0">
  231.         <tbody>
  232.             <tr width="100%" height="100%" id="pHeader">
  233.                 <td id="pHeader_company">
  234.                     <table width="465" height="100%" id="pCompany" cellpadding="0" cellspacing="0" border="0">
  235.                         <tbody>
  236.                             <tr>
  237.                                 <td id="pCompany_logo">
  238.                                     <div class="div_cLogo">
  239.                                         <img width="130" src="http://erp.th.ps-groups.com:8000/files/PSIM_Logo_Big.png">
  240.                                     </div>
  241.                                     <div class="div_cBranch"> <small>สำนักงานใหญ่</small>
  242.                                     </div>
  243.                                 </td>
  244.                                 <td id="cAddress">
  245.                                     <div><b style="font-size: 10px;">       บริษัท พีเอส-กรุ๊ปส์ อิมพอร์ต แอนด์ เอ็กซ์พอร์ต จำกัด    </b>
  246.                                     </div>
  247.                                     <div><b style="font-size: 9px;">        PS-GROUPS IMPORT AND EXPORT COMPANY LIMITED </b>
  248.                                     </div>
  249.                                     <div class="min_2px_hight"></div>
  250.                                     <div><small style="font-size: 8px;">    551/64 ถนนสาธุประดิษฐ์ แขวงช่องนนทรี เขตยานนาวา กรุงเทพฯ 10120  </small>
  251.                                     </div>
  252.                                     <div><small style="font-size: 8px;">    551/64 Sathupradit Road, Chongnonsee, Yannawa. Bangkok 10120    </small>
  253.                                     </div>
  254.                                     <div><small style="font-size: 8px;">    TEL: (66) 2 417-9473 &nbsp; | &nbsp; FAX: (66) 2 405-7097&nbsp;EMAIL: trade@ps-groups.com</small>
  255.                                     </div>
  256.                                 </td>
  257.                             </tr>
  258.                         </tbody>
  259.                     </table>
  260.                 </td>
  261.                 <td id="pHeader_doc" style="padding:7px 0px 0px 0px;">
  262.                     <table width="100%" id="pDocTitle" cellpadding="0" cellspacing="0" border="0">
  263.                         <tbody>
  264.                             <tr>
  265.                                 <td class="tr_doctype_label">
  266.                                     <div class="div_data">          เอกสารต้นฉบับ   </div>
  267.                                     <div class="div_data"><small>   ORIGINAL DOCUMENT   </small>
  268.                                     </div>
  269.                                 </td>
  270.                             </tr>
  271.                             <tr height="12px">
  272.                                 <td style="vertical-align: middle; font-size: 8px;" id="pDocTitle_name">
  273.                                     <div class="div_data min_2px_hight" style="font-size:10px;">
  274.                                         <script>
  275.                                             if (typeof doc != "undefined") {
  276.                                                 (format_heading((doc.select_print_heading || ''), 'th') || 'Heading TH') + ' / ' + (format_heading((doc.select_print_heading || ''), 'en') || 'Heading ENG')
  277.                                             }
  278.                                         </script>
  279.                                     </div>
  280.                                 </td>
  281.                             </tr>
  282.  
  283.                             <tr width="100%">
  284.                                 <td class="center">
  285.                                     <div id="tax_id" style="font-size: 9px; text-align:center; color:gray;">
  286.                                         <small>
  287.                                             <span>เลขประจำตัวผู้เสียภาษีอากร&nbsp;: &nbsp; 0-1055-56036-37-2 </span>
  288.                                         </small>
  289.                                     </div>
  290.                                 </td>
  291.                             </tr>
  292.                         </tbody>
  293.                     </table>
  294.                 </td>
  295.             </tr>
  296.         </tbody>
  297.     </table>
  298.    
  299. </div>
  300. <div id="page_div">
  301.     <hr>
  302. </div>
  303. <div id="tax-invoice_content">
  304.     <div id="doc_info">
  305.         <table width="100%" cellpadding="0" cellspacing="0" class="fixtablelayout">
  306.             <tbody>
  307.                 <tr>
  308.                     <td colspan="3" style="vertical-align: top; width: 50%;">
  309.                         <div style="padding: 0px;">
  310.                             <table cellpadding="0" cellspacing="0" style="width: 100%;">
  311.                                 <tbody>
  312.                                     <tr>
  313.                                         <td class="field_label">{{ _("ชื่อ") }}
  314.                                             <br><small style="color:gray;"> {{ _("Name") }} </small>
  315.                                         </td>
  316.                                         <td class="field_data">
  317.                                             {{ doc.customer_name }}
  318.                                             <br>(เลขประจำตัวผู้เสียภาษี: {{ doc.vat_id }} )
  319.                                             <script>
  320.                                                 // doc.customer_name + '<br>(เลขประจำตัวผู้เสียภาษี: ' + doc.vat_id + ' )';
  321.                                             </script>
  322.                                         </td>
  323.                                     </tr>
  324.                                 </tbody>
  325.                             </table>
  326.                             <table cellpadding="0" cellspacing="0" style="width: 100%;">
  327.                                 <tbody>
  328.                                     <tr>
  329.                                         <td class="field_label">{{ _("ที่อยู่") }}
  330.                                             <br><small style="color:gray;"> {{ _("Address") }}  </small>
  331.                                         </td>
  332.                                         <td class="field_data">
  333.                                             {{ doc.address_display }}
  334.                                             <script>
  335.                                                 //doc.address_display
  336.                                             </script>
  337.                                         </td>
  338.                                     </tr>
  339.                                 </tbody>
  340.                             </table>
  341.                         </div>
  342.                     </td>
  343.                     <td style="vertical-align: top; width: 30%;">
  344.                         <div style="padding: 0px;">
  345.                             <table cellpadding="0" cellspacing="0" style="width: 100%;">
  346.                                 <tbody>
  347.                                     <tr>
  348.                                         <td class="field_label" style="width: 37%;">
  349.                                             {{ _("เลขที่") }}
  350.                                             <br>
  351.                                             <small style="color:gray;"> {{ _("Tax Invoice #<br>Receipt #") }}    </small>
  352.                                         </td>
  353.                                         <td class="field_data" style="width: 63%;">
  354.                                             {{ doc.name }}
  355.                                             <script>
  356.                                                 //doc.name;
  357.                                             </script>
  358.                                         </td>
  359.                                     </tr>
  360.                                 </tbody>
  361.                             </table>
  362.                             <table cellpadding="0" cellspacing="0" style="width: 100%;">
  363.                                 <tbody>
  364.                                     <tr>
  365.                                         <td class="field_label"  style="width: 37%;">
  366.                                             {{ _("วันที่") }}
  367.                                             <br>
  368.                                             <small style="color:gray;"> {{ _("Date") }} </small>
  369.                                         </td>
  370.                                         <td class="field_data" style="width: 63%;">
  371.                                             {{ doc.get_formatted("posting_date") }}
  372.                                         </td>
  373.                                     </tr>
  374.                                 </tbody>
  375.                             </table>
  376.                         </div>
  377.                     </td>
  378.                 </tr>
  379.             </tbody>
  380.         </table>
  381.     </div>
  382.  
  383.     <div id="doc_items">
  384.         <table class="fixtablelayout" cellpadding="0" cellspacing="0" >
  385.             <tbody>
  386.                 <hr style="color: lightgray;">
  387.                 <tr class="div_label">
  388.                     <th class="tbl_header" width="50%" align="center"><b>  รายการ  </b>
  389.                         <br><small style="color:gray;"> Description </small>
  390.                     </th>
  391.                     <th class="tbl_header" width="10%" align="center"><b>  จำนวน   </b>
  392.                         <br><small style="color:gray;"> Quantity    </small>
  393.                     </th>
  394.                     <th class="tbl_header" width="20%" align="center"><b>  หน่วยละ </b>
  395.                         <br><small style="color:gray;"> Unit Price  </small>
  396.                     </th>
  397.                     <th class="tbl_header" width="20%" align="center"><b>  จำนวนเงิน   </b>
  398.                         <br><small style="color:gray;"> Amount  </small>
  399.                     </th>
  400.                 </tr>
  401.                 {%- for row in doc.entries -%}
  402.                 <tr>
  403.                     <td width="50%" align="left" style="vertical-align:top;">
  404.                         {{ row.item_name }} {% if row.description != row.item_name -%}
  405.                         <br>
  406.                         <i><small style="color:gray;"> {{  row.description  }} </small></i>
  407.                         {%- endif %}
  408.  
  409.                     </td>
  410.                     <td width="10%" align="center" style="vertical-align:top;">{{ row.qty }} {{ row.uom or row.stock_uom }}</td>
  411.                     <td width="20%" align="right" style="vertical-align:top;">{{ row.get_formatted("rate", doc) }}</td>
  412.                     <td width="20%" align="right" style="vertical-align:top;">{{ row.get_formatted("amount", doc) }}</td>
  413.  
  414.                 </tr>
  415.                 {%- endfor -%}
  416.             </tbody>
  417.         </table>
  418.     </div>
  419.     <div><hr></div>
  420.     <div id="doc_summary">
  421.         <table class="fixtablelayout"  cellpadding="0" cellspacing="0" >
  422.             <tbody>              
  423.                 <tr>
  424.                     <td class="field_label" width="20%">{{ _("Total of ") }}</td>
  425.                     <td class="field_label" style="text-align: center; width: 35%;">
  426.                         <div>- <script> (doc.entries.length) </script> &nbsp;
  427.                             <script>if (doc.entries.length > 1){ ('items.')}else{ ('item.')}</script> -</div>
  428.                         <div><i style="color:lightgray;">(E. &amp;O. E)</i></div>
  429.                     </td>
  430.  
  431.                     <td class="field_label" style="text-align: right; width: 17%;">{{ _("Net Total") }}</td>
  432.                     <td class="field_label underline" style="text-align: right; width: 28%;">{{ doc.get_formatted("net_total_export") }}</td>
  433.                 </tr>
  434.  
  435.                 {%- for row in doc.other_charges -%}
  436.                     {% if not row.included_in_print_rate -%}
  437.                         <tr>
  438.  
  439.                     <td class="field_label underline" style="text-align: right; width: 70%;" colspan="3">{{ row.description }}</td>
  440.                     <td class="field_label" style="text-align: right; width: 30%;">{{ row.get_formatted("tax_amount", doc) }}</td>
  441.                 </tr>
  442.                     {%- endif %}
  443.                 {%- endfor -%}
  444.                 {% if doc.discount_amount -%}
  445.                 <tr>
  446.                     <td align="right" colspan="3" width="70%">{{ _("Discount") }}</td>
  447.                     <td align="right">{{ doc.get_formatted("discount_amount", doc) }}</td>
  448.  
  449.                 </tr>
  450.                 {%- endif %}
  451.  
  452.                 <tr>
  453.                     <td align="right" colspan="3" width="70%"><b>   {{ _("Grand Total") }} </b>
  454.                     </td>
  455.                     <td align="right">{{ doc.get_formatted("grand_total_export", doc) }}</td>
  456.                 </tr>
  457.                 <tr>
  458.                     <td align="left" width="20%"><b>   {{ _("จำนวนเงินเป็นตัวอักษร") }} </b></td>
  459.                     <td align="center" width="50%" colspan="4">
  460.                        
  461.                         --&nbsp;
  462.                         <script>
  463.                             ThaiBaht(format_currency(doc.grand_total_export, doc.currency), doc.currency)
  464.                         </script>
  465.                         &nbsp;--
  466.                        
  467.                     </td>
  468.  
  469.                 </tr>
  470.             </tbody>
  471.         </table>
  472.     </div>
  473.     <div>
  474.         <hr>
  475.     </div>
  476.     <div id="doc_footer" class="field_data">
  477.         <small style="text-font:8px; color=gray">
  478.             <span>หมายเหตุ</span><br />
  479.             <span>1. โปรดตรวจสอบความถูกต้องของรายการและรายละเอียดในเอกสารฉบับนี้ภายใน 7 วัน มิฉะนั้น ทางบริษัทจะถือว่าเอกสารฉบับนี้ถูกต้องและสมบูรณ์</span><br />
  480.             <span>2. ใบกำกับภาษีนี้จะสมบูรณ์เมื่อมีลายมือชื่อของผู้มีอำนาจลงนาม</span><br />
  481.             <span>3. ในกรณีที่เป้นเช็คใบกำกับภาษีนี้จะสมบูรณ์เมื่อธนาคารเรียกเก็บเงินได้ครบถ้วน</span>
  482.         </small>
  483.     </div>
  484. </div>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement