From 91612eb48d18f06e120a1eb884b796479ec6b775 Mon Sep 17 00:00:00 2001 From: alltheworld Date: Fri, 21 Feb 2014 07:26:40 +0200 Subject: [PATCH] Report 1 --- app/views/invoices/edit.blade.php | 13 +- public/images/report_logo1.jpg | Bin 0 -> 11112 bytes public/js/script.js | 750 +++++++++++++++++++++++++++++- 3 files changed, 756 insertions(+), 7 deletions(-) create mode 100644 public/images/report_logo1.jpg mode change 100755 => 100644 public/js/script.js diff --git a/app/views/invoices/edit.blade.php b/app/views/invoices/edit.blade.php index baee61b8e469..e4fac53c3094 100755 --- a/app/views/invoices/edit.blade.php +++ b/app/views/invoices/edit.blade.php @@ -207,10 +207,10 @@ -
+ {{ Former::select('invoice_design_id')->label('Design')->style('display:inline;width:120px')->raw() ->fromQuery($invoiceDesigns, 'name', 'id')->data_bind("value: invoice_design_id") }} -
+ {{ Button::normal('Download PDF', array('onclick' => 'onDownloadClick()')) }} @@ -558,6 +558,15 @@ invoice.imageWidth = {{ $account->getLogoWidth() }}; invoice.imageHeight = {{ $account->getLogoHeight() }}; @endif + + + //define logo images + + + invoice.imageLogo1 = "{{ HTML::image_data('images/report_logo1.jpg') }}"; + invoice.imageLogoWidth1 =120; + invoice.imageLogoHeight1 = 40 + return invoice; } diff --git a/public/images/report_logo1.jpg b/public/images/report_logo1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64fe9c87a8a00a3758af758110e75bd5e0be56dd GIT binary patch literal 11112 zcmb_?by!@_(&o%Cz~JtZ8QdKL1b26L5AGyDfS`lBYjBq!!QEW~1OfyN1WRxaWXZkX z_q)6M*Y2}hGiRQ2`c&6EUEQbOs(R0#kRg8s z5eWqq1%mqb;;)gv2LASX{z9I6{Y&Nl>gP{C00#o_2D%{taR4A3AOa5X&me#j00aQR z2+w2qN01SbASggEDgx;FKE>bv1ppEMr~5z<5&{?*f`a&G1%QqK1c0y+umJ$z#^yg3 z{@+eq#d=ew$L<72{9@5=tJ5-HQ%J}#1FCWY|1k^f1177-TjSSIglxVUy{%5d8B-D& zYS&c?68J|4fDlZAXm&^-(a*-c>4nx=uef$d7!;6J&-Wjdf1d%()B7&}_s0L_T1KSp zT+VQT(w56~KR&kUWa@#n!f1TqS%-tvXtLoa0D$2z;XwvyG;a8gYFb<)X5ptw;P=;r zaX~$vi#2%k_$p@CWuXr5u4wv(ta_WLaVkw>Csf1Ij5I5Hx{K9?G-A5! zi1%HtRY~TBM=F81(43_QZ(?Uh@)xrU9wo`BMg2K$t@Cti^Wys7T2t}%Mo5K?Z;mQP z0SG_l&EJlSa+~Ct{I+|!Jk9<3fq9shmG@O9g$;Bfw^_Wt=AcgAa3qJ^-nHE3B|`O4 zzx`XK7wP9NSo)tuyjU0czoj+S$=778?W>ZmvNggd?$hnsrwOfDz7Vi{zz@j^v0gK2 z008{%?M+F3b>~jo`-QX=FS6Vbp*RuAF9=ExddeB)M5%vflOT%()mm1HpS_&jPfglj zrbQM*BdqpQsfoptE?I%H@@ zl84R;sJRA1$X5VqFWJt{5-qvJ`!SRBPMx&^84BwwR-)+UsQYxiHn@MSiP$WvZuE)L zEWKH5RvO`g32+ofO@_D7r__Z5`8gpw$_%_n`YJa^|s&=AoHg{XJ!FMeALs1oQY z_Qfa&T5IE|QVK2nxcMcXYN6iBbu!L@eo!6L`*IwYEat;YW#CwUYiyt&$?3;oaQ109 zf{2*U%c4w_3~mQP>`mfGv6sl%qFAh4iPw{^v0@{8lP}IniY75w%$RCs%zM zx_k<|&~}Z&9i7sd;*_A>vKg;eK3OioiUJKqt+0-Itj_Dd+mZots@aVctPuI=R_=-z z@JTYoPfv#Ths~Nux#o@_KUULg&V-K81!j0ow}e<7FEZ9~E%;?EKDOmHTn>K0au(-U zasUjju)4|7agu3!AgqKV`Mz~ud9&CcSc$!$eB!+Pha4^tsZmWqGJ& za!)<4k5MjSjV33&Az|uMeU`&kmsdepB&w58lPQB1t5s)m%(JYEs35z0U}eLrXeU*H6Nb^#Q-bVarHEzhLQZ=Tsd9y`J?E{v!6V&9XbLsFXv$LgY81)UJkVEruG7(AG4EvaI zc_Y8Scm*hcE1T0OIT@|ynqdK*aGF*<8+}+{}FP_;eNt1ZDj-ceqF8jqwBZ{6~yA&mF! zDhkY+^e^cvqFP7^SZG^YNWbmsFbQ(%syk!$_RXh+k2P`UDu#Xt>mYL>lhJY6c`U*n zl#_-Z;lxN*zA7Jv#e9cFyoTwf1KBPR(4_E%F_X477&b~`))$Z7_?i9I{Ro$`l7Y2T zEha=0636nUVoysHKE_zE==p)~iZ0F`Pmc3ENEJROKb(WZf4q1evoH?edB_OJ$Pl#u z+Do4i9|4Swh=hZT3*+Dv4}##~L$%Bk2?&X(G?MD)sAn|&WT%YrSngcw)Gme!)!#jQd{Ea^XsJVM~+{2>iCH6igr8S@4I`tN>D7i<-Z zO_q3lVXh1Lz5&aNt{Kzc`N53k`BAh$jbM~ftr{MD253uR7-&7$_&y>LLB^vQ(b+)8 z{SD7*^PorWwwqBdeOvY-V)yd9_mOWeYfBY>rw3Rn54bFT!w>fe#G&%2B%7%Q@wKx5fihC3Z$v0yhK zR?Bwy&fkepe+I4Rh!Fu95e*p`N*L>p(|%D6c=wnS85SI z+fpNNwC{}>jf_tlIuQb5I~zrCs+>{7cotvIBSmYBGfAtV#M*mvr3hY%vQT0d`VGim{hve56r4!BxZIBn0J!<-s2eCOUG3Gr~0-*oCFw z%6J<7u=-zyY`;1zYF!yVp$`eD%(Ugpk(m}oneM#dw&IPbFLWBx;4FOi?aG*SEn^CK zZ28ODg_tqQKJ8Mt470W@*L>=aoCNVE4KlvS3ml>rlA+zeD>}}1-*py}*B5G|9sF~o zkj;jDjAP<5%Y79T(sxF1dWt>HhG0eANqNh4K^BU0=ELwyf4aG5L9Mr!JM=#Y)+|_K zJ}huPouBmy91WH>I@eUZkMFn#DI2nhqU*?xQ;&9sm=;In+(zn5YQWg(HzI*w+8JiuPsFw)UxyWdWMquqg$cQ(#?><(q-q9FB$0c3p@*pJ zJc%MBZqR?)V^}bY3f`>F&B|VhI&xy3D#Q2o(wF8dU(g9w9B)}^56+72aycbIV76*+ zylkIRQHPg~uWeFS__8@{MU^0MkNT{ARrJgDH@+Pq(>7$fDm)}OR{6lS>+NOdw7cT} z%7KZYE`Q7M#OuVT2VEy)tVSzmQpIuA+=4P(asyeTz?gOaa9BUmD3MFs%KX##v}Dvy zwzgtgp~T|`b>*FDdTf}Fr6#|ImCM80VtA5`WG<6ntI9teDoffw z?!Hk9v`E9bQ*Z4=>=LZo3fC{QAs><{7CGY5ZQ?=y zj^AnQ%V?#w-yU0oj}LemSXx^EZjYVvayc4HEt`5pd$vLKD6DI%UDqm92e4mSM%MQ4 z>qrw-SNT6kU1k>EwtitS(Vzk%8CEgXYlth48h-i%K+Cma4sGOoo_IN1ojD69Y_!N~(>90|eA4fenSH32(MCs6RJZw`PSx&BpC5ZMuFRWUNtOhekE<1-Lol+^HURiVlar@>Wgy{jV9r-e!;P05kdR!#K`EI;4`KX>*u9_JM9;<ph1`;x*am6Lt)Gy79?gtk0m6J49K`1+!>>RpbKwb4f;aST#{X?o7oONnX7o-cY`eM61UwCXyfGj3f+UtniW-*%p`(2wdV_Hz|C z3BzkB!vULsTT8e#VyW=cU-*AZE-VzwT6|e}x)t!-$80K~!|_Gi&vXTc&uPD6GODew zuy;er^g??$&(=k+ubFl@B&!k;Jy?c4jfjMuB7h90jSAskRdPf%-4BlsLuTwv+{lo( zX=5VguXZ$H=jkF9%WHoCLs1iQ2ILt>oXFQ#?B77c8pYAJbD@Nh3s0`e>W|wjHul-s zK@qqVr%t*+hUDGkjilU2n?HaCBXNfvlEQg5`N`-4-LnM#=StM8338?@47MbX2)nf| zgB*ef{vf&1kDU23w)(bs8R|k`lL~MES!F|-Tq1C;8gd)E*8h(|GNWZfDOf7AoqJ|Uko`d69;@7H|di<`eUf1phqQfnvDEza%IL$cQwBtOi; zNWI=;7IT!hZk#8ANB-WINnUI+0$5hMlAV2F@ALu z*DP6`q^ec4+MCKrY2K#%USt`O(6)%r*cKo)pz?jCyfWY2@84dZv}reM6x0$ah%)16 zYF8^%y=Q$hycOTJ-Gx?xa2ls~Zk`0xN-NM>u$${NR6SCJL_|c!3HRprv ze5_~)TD5>e(xjx;GWfmtISx4q$7@7Zh}qq@hAZ$ZofsR9WjHekXVdFcGfEfT;U?J} zY2OcqFl1MnH{xWaOXe$ZypMOdSmT3zax5g3yZcI$5y%SY4J=awB(04p;cKPdq#-K(JLxr#Aod5<}NLA^?YUG_t#9Di)&(~kqtIQer(CRBtQq(u`j-sWEXaMb{1?a{XjBc6Hm=GSDUoUY8^Z zazblfb9K~UOu07%8;nvnuoe(085-+SOImml* z{;|&#$S{nX1!G-mFk?tnP{#?e61}@yynzJOnPV@%JBIIh+%2yqDA^$jK}4H3Z9l6& z6IYMIN7j!{ohH4(CR-e(j@8?R4Xm$xHYabT5>0NCXizjO*ws+9N6p?eYFtN?A2gx* z;m4ZCZS=YBEkCW6z}u;oYItU)+^%Q+tA(8fCejf#2z85$cxNITcG$qSwNmGJ<^F>B zoL2}dD}2>5q=e*4;9Y)=kR|q=#2hs?mU;qFF~-1W`b{hPr_!bE$nu5PKLk&6)WhVG zy^UhL#J3!yf05&)dOJ&=At#3kW8yA7#rNz(z7#T;9O~cs4s(Far{69XZJxzhzQm8Q zz-VgynQ=DnNcLdQVQWEeg8Axwr*$_x#jLQGNXborrh?SSFhtDQ+Fw>j0k7O8Bqo*3 z6zLZEH@OPZ9EJ&wxhk9Q_p!EvxzpiN$y&M8yz+!)t2u5ZfGu}x#;ctQHJIJHMDK9- za^cgc&mt}fV^W7gkHfv&OmfLsmA8012sr!m4*=`ewjtUJ#;Z3`3VbRX8)!A3%TQg{ z6zKi{M1seK19Fd*B;^bA{oUOlN~q4}&-Fy{J*Rr;riF!fp4jFtlzRSBXJf9hK6aDR zbk%iYCy)s}1%=XW+bDveKpiIZ9)PAi6)i4{k@y2LEzO`-LDf@%eUP5|^g*$i^ZbjN ze0<=5ab(jDmhK5M2Sz#U6g?9Y-bR2ueThmlV(|$Tx51d8^YzjjZPlRH(3FNIp;7g3 z>`49SY}KRnAoFTzd=v zET2yvc+*JOQ-lLx5wsR&cI!l=^FR?ZA{y74n|Yx$o-mZqa|)GD7K9aawXUSu`0_Bd zatJFqus*0r!Kl8lxjee>qtQ$eDZJ2rvi>2dLtZkk9f8J$G~hT=agW#s_Cv&v{WNfM zVuE!SC7b~T&MhdYv9(nsQo2cDPPK;1q^{qDABk^XqJg6v1w501J|N8g2i z+Ofh&C7y%obrB%ku6?(l$j3V2&(mWJ_76Mes!n(jGR$bk7sPy)RA#$2{GNH*;*GQV z@D-PI26DS9d14|v70zvVr|QW(#VuvS&2kvui8t2e&?;-%NB7=?xx59(8sR3Gm#k9U zm%(A`CAK?qwy5eRlzc$Utyn=feTzuufH|s^DSG$0Xi>V3Kl>M+L4xMlH$%I@VVl%9 zZ=;*#tO5(EB(y{PG6U+R8=;KQ5l5#TPIGV@WU7<|=;}up2u!&6eEPNtJTfdF@XC&n z>tWjcYCE>^3|V-w=t2mijDT6)DwxtbjsvkXBO)N+ahxr0%_2Z)&G+kC$Tf>-zr@R9 ztkLZCs_PL?ild^Nu$hiQf^$C)gp~CadV~0{xsV`QN`scPv#F@{vLch!dvtt2=HP1l z&zz>shXMSTbBG8xewi31HoJ}8tcun4a~BA!*-=dUpn&%j4YBQaSWVVz>|;4=IuUIj zc6?`uVopt-M4+1}T!fFKl3Jol@O-I+E~DIj9+Yn_lpUk@BE)xRVif^tU|8O&11; z;KRwb!7YWFFWTY+wsguQhlMkQ+7Y5mj=aHW=WP*bR*E;BWdLai{rE1r%8T8Hw=pl) zU=xhW5%N8Uq0m{^j#28$?YEspHm+D-^`(PhmSlYzFI4cOguLFbO%LWFs67C{MX@Of zg4p(BC6nwFjH5s}K<|hhprQ4b;#5ApFusWU&m!nBk#Lk=i&>sr68z8E(PY5$`AJx36meuQq9CGEHI#!W{^pc(j@<0;`gPj^ypU^$^D^1=J( zBIv&;Y`|ZC7? zRKSfH0D#3Ihn@fe}M*kfOJTs>N98PT5 zGtr@L9+X(1=GJ!_IJfl=&4K--UHsOgJ@u4>wb)D4KJ8izi!1;}y^|K#nWVr|j#oVq zoa@tLHe>l1jlYQ%%sJkCKMBJ=0*vP~X^AP)!soz|nh+uYZQSPwB0joFg;288QZPqK zFoz4$ikgjj$_%yLUjO6b?}-~7$|BXmcSh$1!i%LGE@i@)WV=b_i#fx@EuS}6v;Zyy zAJqxOJEw7S3@1z7;%?i8!cy|skn1(4q%TZU(`L*}&D3vEQbuHax#wl#?LRj;q3^qO z0yApj?PH+i$b@H`N~K^o*OT~!kOk2}_Cc<1S~V$e9eNcIy;6wqC>SMSe^x2RiewrYb_8R%C$R97m7RZnczP8Cs)=ZD%F zm0w#@y1Ax2l;*`qo2WIB@fB$YlWcR9A?A~`v{g~Gu_9^O{H*mtL$_{tn|j?iNfXsY z?b~BE=X|tL)Ta-;>vl*soxE8C>*gu4?4(m>GZ;Qjr@CquWM-}PyfF?uJ9^#-`OXW3 zJ(4cF*O#-J_o)42mYDkDK9+*QvDO|re4CuLGAq#<4<61Lx^cNr=y}Ggd z986?Bwo|ZXVq!zJOOgmkTw*_UsPeb|oW9l9hE|OEw9#HGcK4`4_?|1`aSV^E&)#Ih zex}&}z7+#NMEJKqpI=ge{X6u8awHa5!;vya|5p$JFBY`rk1?X6e2L5Pp(^$Mfp_H6wqD&U8C!C-Wdz#8 ze*ggr`L z;a=X+@%9(PXA5R-oVNcV0W0AFzk22R>sQP8P@s583`HoA)xU|E=y-g{z=mfq6_>7; zbEq9Tkko1@@Cf3z&6(H?FD4!qim*iu(|`z@$<6bALRLUWn2Y2dYAeFGk`qgMuPCh- ztG0Pi@=e4meB{8O7=pC4jJ~n9L>?bR21s#WSbULizsCP`x4U=o2axf8^uj<-nl9?o z++ewz(~?1dDj1QbeMOd$Dco!)=CzYqRD8b9fdBSRQ$szjWvqA_j)U`Nenks%bV$XAlwK+g4DfVT)&LE&t#p z);!q$V}@n+`esdRR4to$sgF6Iv<(Py&ldW@=E)5w zk+~~k5_g7J0KfwP@QThIghch`&JElP#r4?z0qDEMoZ3y^j^LZD^Zf?g5A2BH3C zMB!H^EL}vUSjQwCLQY+IwaZO~K}aAHtvIG1G`3&{iDkQ2eMyo9#eE88?{*=d5z64o z7y?I?;iOxxukYnjzal)WG>`(qW8f+Tbz%u%Yw*NnKWHk9sg}C}mj##BH>f>Og^h@o zC|>&;noOQ%HD8iKb#S@205O*$6RQj}7%ea7>v$jDdn7TYv+u^ldaG*o6XzUrTV4{_ z(Kh7X1TtC>t>VVJ|!-f&T0($e^DRYBjl3w*U75?L&t+~A*cw(k&j)cBIr z-M&{?%%Tn@e80fRGFy0Kw@34IZ<5hG^8_Zi+rX0G_1~#^_fxD@ z4v8q(Tw|YeOe0JaS*HLEj5ZK+7S4aSM#M_5EaQbVM`qLk-%iUEg`Cmd7d()E1PyYk zX0dJWEx$FA@#{Dtk6pnGL{1f>s2=KY&mvmr<>w(XpOK(FH@1wffO<2i%}>8RTn&PE zh0)Dv>+f%iNsE%4M{uR$4jES8Z+-(rk`V8 z$Yjdm^Elneqjlx-d{Sz|4^-FJD+CE4Ne)Qb1yITxD4geD+DOO|n;oJMT-Ir>RjDb<2 zZ_n&WM;YaSQZSYI+vPZaAXuu3mdhqO1qac*n4`Er41&ahgg`t>W}vAM^u~2FCxEk8 z3KhJZ#{r*55KuUxnMLm8=jB90wA+Vn$N(ZN5G|0d5!tqQ-M5eTl%j?r64iV;(DgW4 zvFQUja-^sws|T$7hGAUH$g<3M2=L;4e07pc~D%bMP%T1E3>ywEG%jPaP*O$dGutRNwseKjh?w0 e3nv4k=pd#Fx9ppH5WXY|AduJ=BS7`f*Z%=%!*yW* literal 0 HcmV?d00001 diff --git a/public/js/script.js b/public/js/script.js old mode 100755 new mode 100644 index 9b5c18274603..996a3b200acd --- a/public/js/script.js +++ b/public/js/script.js @@ -7,6 +7,17 @@ var isChromium = isChrome && navigator.userAgent.indexOf('Chromium') >= 0; var isIE = /*@cc_on!@*/false || !!document.documentMode; // At least IE6 function generatePDF(invoice, checkMath) { + + +console.log ('DESIGN:'+invoice.invoice_design_id); + + report_id=invoice.invoice_design_id; + + doc= GetPdf(invoice,checkMath,report_id); + + return doc; + + var client = invoice.client; var account = invoice.account; var currencyId = client.currency_id; @@ -78,7 +89,7 @@ function generatePDF(invoice, checkMath) { var invoiceNumberX = headerRight - (doc.getStringUnitWidth(invoiceNumber, false) * doc.internal.getFontSize()); var invoiceDateX = headerRight - (doc.getStringUnitWidth(invoiceDate) * doc.internal.getFontSize()); var dueDateX = headerRight - (doc.getStringUnitWidth(dueDate) * doc.internal.getFontSize()); - var poNumberX = headerRight - (doc.getStringUnitWidth(invoice.po_number) * doc.internal.getFontSize()); + var poNumberX = headerRight - (doc.getStringUnitWidth(invoice.po_number) * doc.internal.getFontSize()); doc.setFontType("normal"); @@ -463,7 +474,7 @@ $.extend( true, $.fn.dataTable.defaults, { //"sLengthMenu": "_MENU_ records per page" "sLengthMenu": "_MENU_", "sSearch": "" - }, + } //"sScrollY": "500px", } ); @@ -840,7 +851,9 @@ function populateInvoiceComboboxes(clientId, invoiceId) { for (var i=0; i 0) { + + var discount = total * (invoice.discount/100); + total -= discount; + } + + var tax = 0; + if (invoice.tax && parseFloat(invoice.tax.rate)) { + tax = parseFloat(invoice.tax.rate); + } else if (invoice.tax_rate && parseFloat(invoice.tax_rate)) { + tax = parseFloat(invoice.tax_rate); + } + + if (tax) { + var tax = total * (tax/100); + total = parseFloat(total) + parseFloat(tax); + } + + total = formatMoney(total - (invoice.amount - invoice.balance), currencyId); + + var balance = formatMoney(total, currencyId); + // balanceX = headerRight - (doc.getStringUnitWidth(balance) * doc.internal.getFontSize()); +// doc.text(balanceX, headerY, balance); + + //------------------------------ + + + console.log (total); + console.log (tax); + console.log (balance); + console.log (paid_to_date); + + + + + + + + + + + var doc = new jsPDF('p', 'pt'); + + //set default style for report + doc.setFont('Helvetica',''); + doc.setFontSize(7); + +//---------------------------------------------------------------------------------------------------- + //Print header on document + //for now we will put static header + //but later this could be changed to more flexible solution + + if (invoice.image) + { + var left = headerRight - invoice.imageWidth; + doc.addImage(invoice.image, 'JPEG', left, 30, invoice.imageWidth, invoice.imageHeight); + } + + + + if (invoice.imageLogo1) + { + pageHeight=820; + var left = headerRight ; + y=pageHeight-invoice.imageLogoHeight1; + + + var left = headerRight - invoice.imageLogoWidth1; + doc.addImage(invoice.imageLogo1, 'JPEG', left, y, invoice.imageLogoWidth1, invoice.imageLogoHeight1); + + + } + + + var invoiceNumberX = headerRight - (doc.getStringUnitWidth(invoiceNumber, false) * doc.internal.getFontSize()); + var invoiceDateX = headerRight - (doc.getStringUnitWidth(invoiceDate) * doc.internal.getFontSize()); + var dueDateX = headerRight - (doc.getStringUnitWidth(dueDate) * doc.internal.getFontSize()); + var poNumberX = headerRight - (doc.getStringUnitWidth(invoice.po_number) * doc.internal.getFontSize()); + + // doc.setFontType("normal"); + + var y = accountTop; + var left = marginLeft; + + + doc.setFontSize(7); + + SetPdfColor('LightBlue',doc); + if (account.name) { + y += rowHeight; + doc.text(left, y, account.name); + } + + SetPdfColor('GrayText',doc); + doc.setFontSize(6); + +//TODO:NOT AVAILEABLE FROM DATAMOEL + //account.email='email N/A'; + if (account.email) { + y += rowHeight; + doc.text(left, y, account.email); + } + else + { + console.log('account.email NOT DEFINED !'); + } + +//TODO:NOT AVAILEABLE FROM DATAMOEL + //account.phone='phone N/A'; + if (account.phone) { + y += rowHeight; + doc.text(left, y, account.phone); + } + else + { + console.log('account.phone NOT DEFINED !'); + } + + + + var HeaderMarginThirdColumn=70;//should be dynamic and dependent on 1st image and 2nd column width + + var y = accountTop; + var left = marginLeft+HeaderMarginThirdColumn; + + if (account.address1) { + y += rowHeight; + doc.text(left, y, account.address1); + } + if (account.address2) { + y += rowHeight; + doc.text(left, y, account.address2); + } + + if (account.city || account.state || account.postal_code) { + y += rowHeight; + doc.text(left, y, account.city + ', ' + account.state + ' ' + account.postal_code); + } + if (account.country) { + y += rowHeight; + doc.text(left, y, account.country.name); + } + + + + + +//-----------------------------Publish Client Details block-------------------------------------------- + + + var y = accountTop; + var left = marginLeft; + + var headerY = headerTop; + + + + + SetPdfColor('LightBlue',doc); + doc.setFontSize(8); + + //doc.setFontType("bold"); + + doc.text(50, headerTop, 'Invoice'); + + + + + + SetPdfColor('GrayLogo',doc); //set black color + y=130; + doc.line(30, y, 560, y); // horizontal line + + + + var line1=headerTop+16; + var line2=headerTop+16*2; + var line21=headerTop+16*1.6; + var line22=headerTop+16*2.2; + + var line3=headerTop+16*3; + var line31=headerTop+16*3.6; + + var marginLeft1=50; + var marginLeft2=120; + var marginLeft3=180; + + SetPdfColor('Black',doc); //set black color + + doc.setFontSize(6); + doc.text(marginLeft1, line1, 'Invoice Number'); + doc.text(marginLeft1, line2, 'Invoice date'); + doc.text(marginLeft1, line3, 'Amount Due'); + + + + + + // invoiceNumber='12345' + // invoiceDate='12345' + //invoiceAmount='12345' + + doc.setFontType("bold"); + doc.text(marginLeft2, line1, invoiceNumber); + doc.setFontType("normal"); + doc.text(marginLeft2, line2, invoiceDate); + + + SetPdfColor('LightBlue',doc); //set black color + doc.text(marginLeft2, line3, balance); + + ClientCompanyName=client.name; + ClientCompanyEmail='';//client.email;//'22222222'; + ClientCompanyPhone=client.work_phone; + + ClientCompanyAddress1=client.address1; + ClientCompanyAddress2=client.address2+' '+client.postal_code; + + + SetPdfColor('Black',doc); //set black color + + doc.setFontType("bold"); + + doc.text(marginLeft3, line1, ClientCompanyName); + doc.setFontType("normal"); + + + + if(client) + { + ClientCompanyName=getClientDisplayName(client); + ClientCompanyPhone=client.work_phone; + ClientCompanyEmail=client.contacts[0].email; + + } + + + doc.text(marginLeft3, line21, ClientCompanyAddress1); + doc.text(marginLeft3, line22, ClientCompanyAddress2); + + + doc.text(marginLeft3, line3, ClientCompanyEmail); + doc.text(marginLeft3, line31, ClientCompanyPhone); + + + SetPdfColor('GrayLogo',doc); //set black color + y=195; + doc.line(30, y, 560, y); // horizontal line + + +//--------------------------------Publishing Table-------------------------------------------------- + GlobalY=y+30; + + + SetPdfColor('Black',doc); + doc.setFontSize(7); + + var hasTaxes = false; + for (var i=0; i 0) || (item.tax_rate && parseFloat(item.tax_rate) > 0)) { + hasTaxes = true; + break; + } + } + if (hasTaxes) + { + descriptionLeft -= 20; + unitCostRight -= 40; + qtyRight -= 40; + } + + + + var costX = unitCostRight - (doc.getStringUnitWidth('Unit Cost') * doc.internal.getFontSize()); + var qtyX = qtyRight - (doc.getStringUnitWidth('Quantity') * doc.internal.getFontSize()); + var taxX = taxRight - (doc.getStringUnitWidth('Tax') * doc.internal.getFontSize()); + var totalX = lineTotalRight - (doc.getStringUnitWidth('Line Total') * doc.internal.getFontSize()); + + + + tableTop=GlobalY;//redefine this to dynamic value + + doc.setFontSize(9); + + doc.text(tableLeft, tableTop, 'Item'); + doc.text(descriptionLeft, tableTop, 'Description'); + doc.text(costX, tableTop, 'Unit Cost'); + doc.text(qtyX, tableTop, 'Quantity'); + doc.text(totalX, tableTop, 'Line Total'); + + if (hasTaxes) + { + doc.text(taxX, tableTop, 'Tax'); + } + + + doc.setFontSize(7); + + /* line items */ + //doc.setFontType("normal"); + var line = 1; + var total = 0; + var shownItem = false; + + + + +GlobalY=GlobalY+14; //padding from top + + var FontSize=7; + doc.setFontSize(FontSize); + + + var MaxLinesPerPage=40; + + + + for (var i=0; i MaxLinesPerPage) { + line = 0; + + tableTop = 40; + GlobalY=tableTop; + + + + + + + var MaxLinesPerPage=70; + + doc.addPage(); + if (invoice.imageLogo1) + { + pageHeight=820; + var left = headerRight ; + y=pageHeight-invoice.imageLogoHeight1; + + + var left = headerRight - invoice.imageLogoWidth1; + doc.addImage(invoice.imageLogo1, 'JPEG', left, y, invoice.imageLogoWidth1, invoice.imageLogoHeight1); + + + } + } + + + } + + + + + + + + +//-------------------------------Publishing Document balance------------------------------------------ + + + + + // var dueDateX = headerRight - (doc.getStringUnitWidth(dueDate) * doc.internal.getFontSize()); + x += 16+50; + + + MsgRightAlign=400; + + Msg='Total'; + var TmpMsgX = MsgRightAlign-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize()); + doc.text(TmpMsgX, x, Msg); + + + AmountText = formatMoney(total , currencyId); + headerLeft=headerRight+400; + var AmountX = headerLeft - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize()); + doc.text(AmountX, x, AmountText); + + + + + x += doc.internal.getFontSize()*2; + //doc.text(footerLeft, x, ''); + + Msg='Amount Payed'; + var TmpMsgX = MsgRightAlign-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize()); + doc.text(TmpMsgX, x, Msg); + + + + AmountText = formatMoney(paid_to_date , currencyId); + headerLeft=headerRight+400; + var AmountX = headerLeft - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize()); + doc.text(AmountX, x, AmountText); + + + + + + + + x += doc.internal.getFontSize()*4; + //doc.text(footerLeft, x, ''); + Msg='Amount Due'; + var TmpMsgX = MsgRightAlign-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize()); + doc.text(TmpMsgX, x, Msg); + + + + AmountText = formatMoney(balance , currencyId); + headerLeft=headerRight+400; + var AmountX = headerLeft - (doc.getStringUnitWidth(AmountText) * doc.internal.getFontSize()); + doc.text(AmountX, x, AmountText); + + + + + + + return doc; +} + + +function SetPdfColor(color,doc) +{ + + if (color=='LightBlue') { + return doc.setTextColor(41,156, 194); + } + + if (color=='Black') { + return doc.setTextColor(0,0,0);//select color black + } + if (color=='GrayLogo') { + return doc.setTextColor(207,209, 210);//select color Custom Report GRAY + } + + if (color=='GrayText') { + return doc.setTextColor(161,160,160);//select color Custom Report GRAY Colour + } + + + alert('color is not defined'); + return false; + +} + + + + + + + + + + + +