Pancake Payments http://support.pancakeapp.com/forums/ Pancake Payments en Copyright 2012 2012-05-17T13:53:42-07:00 codeigniter library project http://support.pancakeapp.com/forums/viewthread/667/ http://support.pancakeapp.com/forums/viewthread/667/#When:09:14:05Z <p>i just wanted to share my progress with integrating pancake with my shopping cart system. I had decided to build my own solutions since i had some specific things i wanted to do with licenses for products like avg. I am using the code igniter cart and ion auth as my authentication system. All i have done so far is the ion auth part which i will post. I have it so that if a user is created on the registration form a client is created on the pancake system and if said persons email already exists on the pancake system skip creating them. This is my first time sharing any code so if i miss something please say so.</p> <p>this is the library i made. so far it just creates clients</p> <div class="codeblock"><code><span style="color: #000000"> <span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;!&nbsp;</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'BASEPATH'</span><span style="color: #007700">))&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;direct&nbsp;script&nbsp;access&nbsp;allowed'</span><span style="color: #007700">);&nbsp;<br /><br />class&nbsp;</span><span style="color: #0000BB">Pancake&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">create_client</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">{<br />&nbsp;&nbsp;error_reporting</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />&nbsp;&nbsp;<br /></span><span style="color: #FF8000">//start&nbsp;pancake&nbsp;client&nbsp;create<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$clientexists&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url1&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"yoururl/api/1/clients?API-Key=yourkeyhere"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$ch&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_init</span><span style="color: #007700">();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,</span><span style="color: #0000BB">CURLOPT_URL</span><span style="color: #007700">,</span><span style="color: #0000BB">$url1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,</span><span style="color: #0000BB">CURLOPT_RETURNTRANSFER</span><span style="color: #007700">,</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_exec($ch)</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$clients&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//end&nbsp;pancake&nbsp;client&nbsp;create<br />&nbsp;&nbsp;&nbsp;&nbsp;//print_r($clients);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">foreach(</span><span style="color: #0000BB">$clients</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">clients&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$client</span><span style="color: #007700">):<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$client</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">email&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">$params[</span><span style="color: #DD0000">'email'</span><span style="color: #0000BB">]</span><span style="color: #007700">)</span><span style="color: #0000BB">{<br />&nbsp;&nbsp;&nbsp;&nbsp;$clientexists&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$clientexists&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">endforeach;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">/*&nbsp;if($clientexists)<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"TRUE";<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"False";&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if(!</span><span style="color: #0000BB">$clientexists</span><span style="color: #007700">)</span><span style="color: #0000BB">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$ch&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_init</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"yoururl/api/1/clients/new"</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'first_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">urlencode</span><span style="color: #007700">(</span><span style="color: #0000BB">$params[</span><span style="color: #DD0000">'first_name'</span><span style="color: #0000BB">]</span><span style="color: #007700">),&nbsp;</span><span style="color: #FF8000">//&nbsp;First&nbsp;Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'last_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">urlencode</span><span style="color: #007700">(</span><span style="color: #0000BB">$params[</span><span style="color: #DD0000">'last_name'</span><span style="color: #0000BB">]</span><span style="color: #007700">),&nbsp;</span><span style="color: #FF8000">//&nbsp;Last&nbsp;Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'email'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">urlencode</span><span style="color: #007700">(</span><span style="color: #0000BB">$params[</span><span style="color: #DD0000">'email'</span><span style="color: #0000BB">]</span><span style="color: #007700">),&nbsp;</span><span style="color: #FF8000">//Email&nbsp;Address<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'phone'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">urlencode</span><span style="color: #007700">(</span><span style="color: #0000BB">$params[</span><span style="color: #DD0000">'phone'</span><span style="color: #0000BB">]</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'API-Key'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">urlencode</span><span style="color: #007700">(</span><span style="color: #DD0000">"yourkeyhere"</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$fields_string&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach(</span><span style="color: #0000BB">$fields&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$fields_string&nbsp;</span><span style="color: #007700">.=&nbsp;</span><span style="color: #0000BB">$key</span><span style="color: #007700">.</span><span style="color: #DD0000">'='</span><span style="color: #007700">.</span><span style="color: #0000BB">$value</span><span style="color: #007700">.</span><span style="color: #DD0000">'&amp;'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">}<br />&nbsp;&nbsp;&nbsp;&nbsp;rtrim</span><span style="color: #007700">(</span><span style="color: #0000BB">$fields_string</span><span style="color: #007700">,</span><span style="color: #DD0000">'&amp;'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,</span><span style="color: #0000BB">CURLOPT_URL</span><span style="color: #007700">,</span><span style="color: #0000BB">$url</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,</span><span style="color: #0000BB">CURLOPT_POST</span><span style="color: #007700">,</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$fields</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,</span><span style="color: #0000BB">CURLOPT_POSTFIELDS</span><span style="color: #007700">,</span><span style="color: #0000BB">$fields_string</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">,</span><span style="color: #0000BB">CURLOPT_RETURNTRANSFER</span><span style="color: #007700">,</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_exec($ch)</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">curl_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$ch</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$result</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #FF8000">/*&nbsp;End&nbsp;of&nbsp;file&nbsp;Someclass.php&nbsp;*/&nbsp;</span> </span> </code></div> <p>On the auth.php file in controllers add </p><div class="codeblock"><code><span style="color: #000000"> <span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">load</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">library</span><span style="color: #007700">(</span><span style="color: #DD0000">'pancake'</span><span style="color: #007700">);&nbsp;</span> </span> </code></div> <p>find </p><div class="codeblock"><code><span style="color: #000000"> <span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">create_user</span><span style="color: #007700">()&nbsp;</span> </span> </code></div> <p>find inside that </p><div class="codeblock"><code><span style="color: #000000"> <span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">form_validation</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">run</span><span style="color: #007700">()&nbsp;==&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">ion_auth</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">register</span><span style="color: #007700">(</span><span style="color: #0000BB">$username</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$password</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$email</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$additional_data</span><span style="color: #007700">))&nbsp;</span> </span> </code></div> <p>and add</p> <div class="codeblock"><code><span style="color: #000000"> <span style="color: #0000BB">$pancakefields&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'first_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'first_name'</span><span style="color: #007700">),&nbsp;</span><span style="color: #FF8000">//&nbsp;First&nbsp;Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'last_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'last_name'</span><span style="color: #007700">),&nbsp;</span><span style="color: #FF8000">//&nbsp;Last&nbsp;Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'email'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'email'</span><span style="color: #007700">),&nbsp;</span><span style="color: #FF8000">//Email&nbsp;Address<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'phone'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'phone1'</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">'-'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'phone2'</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">'-'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">post</span><span style="color: #007700">(</span><span style="color: #DD0000">'phone3'</span><span style="color: #007700">)<br />&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">pancake</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">create_client</span><span style="color: #007700">(</span><span style="color: #0000BB">$pancakefields</span><span style="color: #007700">);&nbsp;</span> </span> </code></div> <p>Of course this is all assuming that you use ion auth. I use it because it was the easiest to user with pancake since it already had the email field in its meta and i didn’t have to edit anything. Also how you get the above information into the pancake array will very depending on your system.</p> <p>My next step is linking the different projects and invoices in pancake to the members area i have created for my customers. That should be to hard since its just a matter of pulling info from the pancake api and displaying it. I will post more as this work moves forward. The last step will be instead of my customers checking out and making a payment to paypal or beanstream it will generate them an invoice on pancake where they can pay there. </p> 2012-01-13T09:14:05-07:00 Pancake 3.3 Roadmap http://support.pancakeapp.com/forums/viewthread/465/ http://support.pancakeapp.com/forums/viewthread/465/#When:19:03:04Z <p>Hi everyone! As you know, we’ve been extremely hard at work, making Pancake the best we possibly can. Today, I’d like to reveal what we’re working toward, and also ask you to let us know what you want. </p> <p>First of all, I’d like to talk about Pancake 3.2. Pancake 3.2 brought out some great new features, including the Client Access Area (Kitchen). We’ve also been working on making it more stable than ever before. As such, the next two releases of Pancake are going to be huge bugfix releases. Pancake 3.2.3 and 3.2.4 will focus on solving and closing as many threads in the tech support forum as possible, as well as fixing all of the remaining bugs we have on our bug tracker.</p> <p>After that, we intend to release more 3.2.x updates only if there are new bug reports, or if there are small improvements or features that we can add to Pancake without waiting for the next feature release. </p> <p>Instead, we’ll be working on Pancake 3.3, which will bring out a myriad of new features. To make sure that Pancake 3.3 best matches what you want from it, we’d like to ask you for features that you’d like to see in it.</p> <p>If you see something you want in this thread, make sure to +1 it by replying to this thread. If you see something you DON’T want, be sure to -1 it. Let us know what you don’t want, and why not. If you want something, reply to this thread and let us know. We’ll make a list in this thread of all the things that were asked for, and prioritize them by how many times they were asked for. After the release of Pancake 3.2.4, we will also be scouring the Feature Requests forum (as well as our own internal tracker) and organizing all requested features here, so you’ll know what’s on our plates, and so that you’ll be able to tell us which features you want to have the most.</p> <p>Disclaimer: We do not promise to develop all the things that are posted in this thread. This is merely so we can figure out what all of you want, and also what you want the most, so we can make sure Pancake 3.3 will be the best update you’ve ever seen. :) </p> <p>Suggested Features For 3.3 (please note, a lot of the features that we’re already working on and that were suggested in the Feature Requests forum are not mentioned in this thread yet): </p><blockquote><p> * (3) Invoice Discounts and default invoice discounts (Settings and client-specific)<br /> * (3) Expense Tracking<br /> * (3) Multiple Taxes Per Invoice Line Item<br /> * (2) Show amounts post-tax in invoices/estimates<br /> * (2) Alter the client access URL for each client<br /> * (1) Customize estimate labels (allow them to be called quotes)<br /> * (1) Multiple contacts per client </p></blockquote> 2011-11-09T19:03:04-07:00 VENDOR list and RESALE markup http://support.pancakeapp.com/forums/viewthread/942/ http://support.pancakeapp.com/forums/viewthread/942/#When:05:32:16Z <p>Good morning, Just purchased Pancake and already sent $1500 worth of OVERDUE invoices I’ve been trying to send for nearly 8 months! I am VERY grateful that this tool is here. Thank you.</p> <p>I’d like to know if there is a way to set up VENDORS within the app so that I may bill clients for outsourced work while tracking payments made to each vendor. In particular, I’m thinking of HOSTING &amp; DOMAIN NAMES for websites. As a designer, I would pay the ISP HOST a set amount for these items, and bill my client a different amount. I’d like to set the price I am charged and then set the markup amount and have only the final cost shown to the client on invoices. </p> <p>Does that make sense? </p> 2012-05-16T05:32:16-07:00 Client Document Management http://support.pancakeapp.com/forums/viewthread/451/ http://support.pancakeapp.com/forums/viewthread/451/#When:07:57:24Z <p>It is great to be able to deliver documents t clients once they pay the invoice, but I think it would be an added benefit to be able manage the documents for the clients (ie update documents, send links to document files). I also think it would be a great feature to be able to upload documents to the clients portal that are not included in the invoice and allow the client to view and download documents within the Kitchen.</p> <p>Several of my clients contact me to get their logo or other assets so they can send it to a vendor. What better place than the Kitchen to see a list of available documents. </p> 2011-11-07T07:57:24-07:00 Price Breaks http://support.pancakeapp.com/forums/viewthread/940/ http://support.pancakeapp.com/forums/viewthread/940/#When:13:19:38Z <p>I’m not sure how many would need this but it would be a big deal for us.&nbsp; In addition to web design we do print brokerage for our clients.&nbsp; Because of this we have a massive list growing in our reusable invoice items.&nbsp; We have about 80 items just for business cards, because we need different prices for different stocks plus there are significant price breaks for various quantities.&nbsp; It’s be nice if we could have a setting where we could list where price breaks occur and how much for each.&nbsp; <br /> And yet another plug for organizing contacts by Business.&nbsp; Spent a good bit of time looking for clients today because I had to remember who, our initial contact was at each company.&nbsp; Many of our clients we deal with 4 or more people. </p> 2012-05-15T13:19:38-07:00 Clean Admin Theme http://support.pancakeapp.com/forums/viewthread/778/ http://support.pancakeapp.com/forums/viewthread/778/#When:10:35:52Z <p>For anyone that is interested, I’ve created a theme based on the default admin theme. I cleaned up some of the presentation, made it wider, and tweaked some things here and there to create something a little more minimal. I imagine it isn’t error free, so feel free to modify for your particular situation. Also, there is a front end theme that matches this that I could make available as well if anyone is interested.</p> <p><strong>Update:</strong> I’m going to be switching to Clean Admin 2.0. It’s a slightly different direction for the admin theme and will be the one I work with from now on. <br /> <a href="http://support.pancakeapp.com/?URL=http%3A%2F%2Fdl.dropbox.com%2Fu%2F21401334%2Fclean_2.0.zip">Download Clean Admin Theme 2.0</a></p> <p>If you like the other version better, you can still download it below.</p> <p><a href="http://support.pancakeapp.com/?URL=http%3A%2F%2Fdl.dropbox.com%2Fu%2F21401334%2Fclean_pancake_admin_1.5.zip">Download Clean Admin Theme 1.5</a> - Updated Link </p> 2012-03-09T10:35:52-07:00 Task / Project Improvements http://support.pancakeapp.com/forums/viewthread/939/ http://support.pancakeapp.com/forums/viewthread/939/#When:14:59:56Z <p>Hello,</p> <p>I would like to request the ability to check on and off tasks for competition.</p> <p>Ability to access projects quickly from the dashboard on a sidebar like seen in Wunderkit and Flow.</p> <p>Calendar view so we can see upcoming milestones / tasks at a glance for better project management.</p> <p>Thanks :) </p> 2012-05-14T14:59:56-07:00 Invoice, Estimate, and Proposal Comments http://support.pancakeapp.com/forums/viewthread/853/ http://support.pancakeapp.com/forums/viewthread/853/#When:23:15:38Z <p>Hello,</p> <p>I would be happy to see the addition of client/admin comments to all invoices, estimates, and proposals. Occasionally I will send an invoice, estimate, or proposal and a client will want to make a revision to it or add something. It would be nice to have that communication done directly under the invoice, estimate, or proposal and have email notifications so everyone involved will be aware of an update or new comment.</p> <p>A nice BaseCamp feature with messaging is that when you add a comment or edit a message you have the ability to notify everyone on the project or make the update without sending anything out. </p> 2012-04-15T23:15:38-07:00 Basic item billing (non-time items) http://support.pancakeapp.com/forums/viewthread/924/ http://support.pancakeapp.com/forums/viewthread/924/#When:01:00:50Z <p>Hi guys,<br /> Pancake seems to fulfill my needs for time based billing, but I wish there was a way to easily bill for non-time based items.</p> <p>When I work on a project for a client, I often make purchases on their behalf (for hardware or software).</p> <p>I’d love to be able to add these items as I go, the same way that I do with tasks &amp; hours billed. Presently I get around this by adding the item as a task which is invisible to the client, setting it’s hourly rate to the resale value, then allocating 1 hour to it - not very elegant, but it does ensure that the item appears when I generate the invoice.</p> <p>Is the presently a better way to achieve this? If not, are there any plans to implement rudimentary item/stock billing?</p> <p>Thanks!</p> <p> </p> 2012-05-07T01:00:50-07:00 Client Area Column CSS http://support.pancakeapp.com/forums/viewthread/938/ http://support.pancakeapp.com/forums/viewthread/938/#When:10:43:43Z <p>Can you add classes to the Client Area columns so that they can be targeted with CSS?</p> <p>I modified the kitchen default template Paid/Unpaid column by doing: </p><div class="codeblock"><code><span style="color: #000000"> <span style="color: #007700">&lt;</span><span style="color: #0000BB">td&nbsp;</span><span style="color: #007700">class=</span><span style="color: #DD0000">"status_&lt;?php&nbsp;echo&nbsp;(</span><span style="color: #0000BB">$invoice</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">paid</span><span style="color: #DD0000">&nbsp;?&nbsp;'paid'&nbsp;:&nbsp;'unpaid');&nbsp;?&gt;"</span><span style="color: #007700">&gt;&nbsp;</span> </span> </code></div> <p>So that I could add CSS to the Branding section: </p><div class="codeblock"><code><span style="color: #000000"> <span style="color: #0000BB">td</span><span style="color: #007700">.</span><span style="color: #0000BB">status_unpaid&nbsp;{&nbsp;color</span><span style="color: #007700">:</span><span style="color: #0000BB">red&nbsp;</span><span style="color: #007700">!</span><span style="color: #0000BB">important</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">font</span><span style="color: #007700">-</span><span style="color: #0000BB">weight</span><span style="color: #007700">:</span><span style="color: #0000BB">700</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">}&nbsp;</span> </span> </code></div> <p>And make it stand out even more that a client has an overdue, unpaid invoice. I also made my Paid status Green. But by adding CSS, it gives us the ability to customize it ourself or not. </p> 2012-05-12T10:43:43-07:00