From 0a9170f5a56b7025726a64f67fb0fe56ef8f8db2 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sat, 27 Nov 2021 16:00:07 -0500 Subject: Transcript --- ...e-emacs-for-invoicing--bala-ramadurai--main.vtt | 706 +++++++++++++++++++++ 1 file changed, 706 insertions(+) create mode 100644 2021/captions/emacsconf-2021-invoice--find-your-invoice-emacs-for-invoicing--bala-ramadurai--main.vtt (limited to '2021/captions/emacsconf-2021-invoice--find-your-invoice-emacs-for-invoicing--bala-ramadurai--main.vtt') diff --git a/2021/captions/emacsconf-2021-invoice--find-your-invoice-emacs-for-invoicing--bala-ramadurai--main.vtt b/2021/captions/emacsconf-2021-invoice--find-your-invoice-emacs-for-invoicing--bala-ramadurai--main.vtt new file mode 100644 index 00000000..5336dde4 --- /dev/null +++ b/2021/captions/emacsconf-2021-invoice--find-your-invoice-emacs-for-invoicing--bala-ramadurai--main.vtt @@ -0,0 +1,706 @@ +WEBVTT + +00:10.290 --> 00:22.480 +What is an invoice? + +00:22.480 --> 00:25.630 +Invoice is a document + +00:25.630 --> 00:28.660 +that you give it to your customer + +00:28.660 --> 00:30.416 +so that they can pay you + +00:30.416 --> 00:31.450 +for your service or your goods. + +00:31.450 --> 00:35.720 +But you are a professor and consultant. + +00:35.720 --> 00:38.730 +Why do you need to generate invoices? + +00:38.730 --> 00:39.730 +Well... + +00:39.730 --> 00:46.640 +I do a service for my clients + +00:46.640 --> 00:47.884 +if I'm a consultant, + +00:47.884 --> 00:48.999 +and when I'm a professor, + +00:48.999 --> 00:51.530 +I'm teaching students, + +00:51.530 --> 00:54.910 +so I have to generate an invoice. + +00:54.910 --> 00:58.420 +Why not use Excel or something simple + +00:58.420 --> 01:00.079 +to generate your invoices? + +01:00.079 --> 01:01.079 +I've tried that. + +01:01.079 --> 01:04.609 +It's no good, when it... particularly, + +01:04.609 --> 01:07.150 +when there are many clients, + +01:07.150 --> 01:09.035 +managing Excels and templates + +01:09.035 --> 01:10.799 +becomes very very tricky. + +01:10.799 --> 01:15.725 +Why don't you hire someone, you know, professional + +01:15.725 --> 01:17.350 +to do these for you? + +01:17.350 --> 01:18.428 +I've tried it. + +01:18.428 --> 01:22.381 +I have to give them lots of information. + +01:22.381 --> 01:25.140 +Not that there's anything wrong with them, + +01:25.140 --> 01:30.130 +just that I found it to be a bit too tricky. + +01:30.130 --> 01:31.250 +Professional software? + +01:31.250 --> 01:33.902 +Good point. I've tried that too. + +01:33.902 --> 01:36.900 +But, what's the fun in that, right? + +01:36.900 --> 01:38.850 +So what did you do? + +01:38.850 --> 01:40.869 +Haa.. this is the interesting part! + +01:40.869 --> 01:45.600 +I took a software called Emacs Org mode + +01:45.600 --> 01:50.640 +and with that, I added Python code to it. + +01:50.640 --> 01:52.418 +I added so many other things to it, + +01:52.418 --> 01:56.168 +and then it became a really nice + +01:56.168 --> 01:59.640 +customizable way to generate invoices. + +01:59.640 --> 02:04.549 +Whoa whoa whoa... Just slow it down, bro. + +02:04.549 --> 02:06.659 +Give me the story. + +02:06.659 --> 02:10.170 +Hey. Okay... Okay... I will. + +02:10.170 --> 02:11.170 +Story. + +02:11.170 --> 02:14.620 +Uh.. Story is simple. + +02:14.620 --> 02:16.590 +The client wanted an invoice. + +02:16.590 --> 02:19.900 +So, I generated an invoice. + +02:19.900 --> 02:21.419 +It wasn't good enough. + +02:21.419 --> 02:24.959 +So, I hacked some little bit of it. + +02:24.959 --> 02:28.480 +I changed every time a new client came. + +02:28.480 --> 02:29.848 +I had to do it all over again. + +02:29.848 --> 02:30.989 +I did that. I did it. + +02:30.989 --> 02:33.110 +Then I got really tired of it. + +02:33.110 --> 02:36.760 +And that's what led me to all these customizations. + +02:36.760 --> 02:38.632 +I want features. + +02:38.632 --> 02:43.249 +So, rapid fire questions. Ready? Yep. + +02:43.249 --> 02:46.079 +Project management? Yep. + +02:46.079 --> 02:48.079 +Format customization? Yes. + +02:48.079 --> 02:50.079 +PDF export? Yes. + +02:50.079 --> 02:52.079 +Multi-client support? Yes. + +02:52.079 --> 02:53.579 +Washing my clothes? + +02:53.579 --> 02:54.959 +Yes... No. + +02:54.959 --> 02:57.013 +Haa. I was just testing you, + +02:57.013 --> 03:00.900 +if you're paying attention or not. + +03:00.900 --> 03:04.659 +Logo and signature customization? Yes. + +03:04.659 --> 03:06.730 +Multi-currency support? Yes. + +03:06.730 --> 03:08.930 +Okay, enough talky or it's just... + +03:08.930 --> 03:10.930 +Can you show me a demo that you did? + +03:10.930 --> 03:12.950 +Or is it just talky. + +03:12.950 --> 03:15.239 +Yes, of course. Demo. + +03:15.239 --> 03:16.969 +Okay, demo time. + +03:16.969 --> 03:18.909 +Some ingredients for invoicing. + +03:18.909 --> 03:21.069 +Org mode, of course. + +03:21.069 --> 03:23.849 +Python environment and libraries for Python: + +03:23.849 --> 03:25.930 +pandas, tabulate, numbers. + +03:25.930 --> 03:28.260 +yasnippet package, very useful. + +03:28.260 --> 03:30.969 +And I use for LaTeX, MikTeX packages. + +03:30.969 --> 03:34.090 +So, I have a project already set up. + +03:34.090 --> 03:36.540 +This is what we have. + +03:36.540 --> 03:38.673 +The project is Teaching 2021 + +03:38.673 --> 03:41.239 +and you can set all this up. + +03:41.239 --> 03:43.819 +So let's start with the first and foremost. + +03:43.819 --> 03:46.849 +Okay, so we're going to use + +03:46.849 --> 03:49.209 +the yasnippet package. + +03:49.209 --> 03:52.219 +uh.. um.. sorry, the invoice, okay. + +03:52.219 --> 03:54.550 +This one introduced, it gives you this whole... + +03:54.550 --> 03:56.377 +generates this whole bunch of code + +03:56.377 --> 03:57.150 +based on a template. + +03:57.150 --> 03:58.371 +All you're going to do + +03:58.371 --> 04:00.939 +is to type out the client's name. + +04:00.939 --> 04:02.797 +Okay and that's it. + +04:02.797 --> 04:04.469 +That's all there is to it. + +04:04.469 --> 04:06.446 +Okay there's a whole bunch of instructions + +04:06.446 --> 04:07.199 +that you can follow. + +04:07.199 --> 04:09.284 +If it's for the first time, + +04:09.284 --> 04:10.549 +use bankinfo.org. + +04:10.549 --> 04:14.409 +Let's check out what bankinfo.org involves. + +04:14.409 --> 04:16.819 +Okay so you can copy this template + +04:16.819 --> 04:19.269 +from my GitHub repository. + +04:19.269 --> 04:24.300 +It's basically setup of the LaTeX tags, + +04:24.300 --> 04:26.854 +and particularly this text file, + +04:26.854 --> 04:28.620 +which is a template. + +04:28.620 --> 04:30.469 +There's some personal info + +04:30.469 --> 04:32.125 +for all the details that you want. + +04:32.125 --> 04:33.814 +Bank information. + +04:33.814 --> 04:35.580 +You can look at it in detail + +04:35.580 --> 04:40.330 +from my repo. The tax invoice... + +04:40.330 --> 04:42.840 +There are some basic constructs. + +04:42.840 --> 04:45.809 +You can totally change any of these + +04:45.809 --> 04:47.620 +to your liking. + +04:47.620 --> 04:50.320 +Okay, so that's bank info. + +04:50.320 --> 04:52.200 +Go back. That's the first part. + +04:52.200 --> 04:55.540 +The second part is creating a client name. + +04:55.540 --> 04:58.420 +So let's look at this setup, + +04:58.420 --> 05:00.710 +and I have one created already. + +05:00.710 --> 05:02.804 +So, in order to create this, + +05:02.804 --> 05:03.880 +all you need to do + +05:03.880 --> 05:06.610 +is to use the inv-setup + +05:06.610 --> 05:10.300 +invoice setup for your client, + +05:10.300 --> 05:12.230 +and it will give you all the information. + +05:12.230 --> 05:14.790 +All you need to do is type in here + +05:14.790 --> 05:16.410 +and then type in the client's name, + +05:16.410 --> 05:18.785 +exactly the same that you see + +05:18.785 --> 05:20.210 +as the file name. + +05:20.210 --> 05:22.620 +Okay, client one. And that's it. + +05:22.620 --> 05:24.250 +You're all set for you. + +05:24.250 --> 05:26.218 +Okay, so that's what it looks like. + +05:26.218 --> 05:28.043 +All the address and stuff + +05:28.043 --> 05:29.710 +filled out here. + +05:29.710 --> 05:32.131 +Okay. And then the next one + +05:32.131 --> 05:37.010 +is to use the... One time, + +05:37.010 --> 05:38.890 +you're going to do the invoice item, + +05:38.890 --> 05:40.590 +which is the rate table. + +05:40.590 --> 05:42.490 +So let's do the invoice. + +05:42.490 --> 05:44.400 +Invoice item... + +05:44.400 --> 05:47.080 +This is item master. + +05:47.080 --> 05:50.320 +So here again, another place + +05:50.320 --> 05:53.060 +where you have to enter the client name, + +05:53.060 --> 05:56.780 +and your rate table is ready for use. + +05:56.780 --> 05:58.891 +Okay. So that was... + +05:58.891 --> 06:00.749 +Now we go to step two, + +06:00.749 --> 06:02.510 +which is clock table for reference. + +06:02.510 --> 06:04.150 +Okay. Let's go to the clock table. + +06:04.150 --> 06:09.660 +I already set up this for ACMEClient1, + +06:09.660 --> 06:12.030 +and I give it a tag: billable. + +06:12.030 --> 06:13.260 +Okay. We will see that... + +06:13.260 --> 06:17.470 +Where have I done that? + +06:17.470 --> 06:23.890 +Okay, so that's the client, you know, + +06:23.890 --> 06:25.360 +ACMEClient1 table teaching 2021. + +06:25.360 --> 06:29.090 +I've clocked it for the previous month. + +06:29.090 --> 06:30.090 +That's what you will see. + +06:30.090 --> 06:31.090 +Let's see it again. + +06:31.090 --> 06:34.840 +Okay. That's... Let's put the instructions. + +06:34.840 --> 06:38.110 +And then you go to clock table + +06:38.110 --> 06:40.490 +to generate the clock table for the client. + +06:40.490 --> 06:42.342 +Okay. So clock table... + +06:42.342 --> 06:44.335 +This is only for your reference, + +06:44.335 --> 06:45.484 +not going to be exported. + +06:45.484 --> 06:50.586 +Here we get a clock table. All right. + +06:50.586 --> 06:53.150 +So with this, you get the clock table. + +06:53.150 --> 06:55.670 +Okay. Now go into the items part. + +06:55.670 --> 06:59.810 +You will see two Python blocks, + +06:59.810 --> 07:01.500 +which is what the next instruction says. + +07:01.500 --> 07:03.526 +Go into the python block + +07:03.526 --> 07:06.180 +and do Control-c c (C-c c). + +07:06.180 --> 07:09.860 +Go to the control python source block, + +07:09.860 --> 07:12.413 +second one, and do Ctrl-c c... + +07:12.413 --> 07:14.490 +Ctrl-c Ctrl-c (C-c C-c) rather. + +07:14.490 --> 07:16.028 +and then finally come back + +07:16.028 --> 07:18.765 +to Raise Invoice and do dispatcher + +07:18.765 --> 07:21.270 +which is exported into PDF. + +07:21.270 --> 07:22.718 +Okay, let's do that. + +07:22.718 --> 07:27.853 +First one is... I just run this code, + +07:27.853 --> 07:30.950 +and it generated this table for me. + +07:30.950 --> 07:34.160 +Okay. So it has all the details. + +07:34.160 --> 07:35.253 +Now we go in + +07:35.253 --> 07:39.560 +the second source code block, + +07:39.560 --> 07:41.700 +and does all this... + +07:41.700 --> 07:43.530 +And it has generated this stuff. + +07:43.530 --> 07:46.335 +Plus, you should note that for beancount, + +07:46.335 --> 07:50.795 +it has also generated the block for that. + +07:50.795 --> 07:51.775 +It's all in the code. + +07:51.775 --> 07:53.820 +You can customize it if you're on Ledger. + +07:53.820 --> 07:54.782 +You can customize it + +07:54.782 --> 07:55.390 +to the way you want, + +07:55.390 --> 07:56.978 +any accounts that you want to change. + +07:56.978 --> 07:58.870 +It's all customizable. + +07:58.870 --> 08:00.710 +Here, even the currency symbols + +08:00.710 --> 08:02.840 +can be changed from INR and Rupees + +08:02.840 --> 08:04.681 +to whatever currency you have + +08:04.681 --> 08:07.190 +can be changed accordingly. + +08:07.190 --> 08:11.304 +I have org-babel-tangle-append code + +08:11.304 --> 08:12.650 +that I will share in the... + +08:12.650 --> 08:13.872 +I've borrowed it + +08:13.872 --> 08:14.889 +from somebody on the Internet, + +08:14.889 --> 08:16.440 +so I'll share that as well + +08:16.440 --> 08:18.650 +in my GitHub repo. + +08:18.650 --> 08:20.830 +Lastly, I just want to share that + +08:20.830 --> 08:23.730 +you can fill your GST website + +08:23.730 --> 08:24.988 +with these info, + +08:24.988 --> 08:26.171 +so you can... You can even put in + +08:26.171 --> 08:27.590 +as many entries as you want + +08:27.590 --> 08:29.370 +in your yasnippet. + +08:29.370 --> 08:30.560 +Customize it the way you want. + +08:30.560 --> 08:32.590 +I also added a month later + +08:32.590 --> 08:33.820 +due date reminder, + +08:33.820 --> 08:36.239 +saying if the invoice is paid or not. + +08:36.239 --> 08:37.209 +Okay. + +08:37.209 --> 08:42.051 +So, a few tips to end this demo. + +08:42.051 --> 08:44.990 +You can customize currency symbol + +08:44.990 --> 08:45.860 +and currency words + +08:45.860 --> 08:47.540 +according to your own currency. + +08:47.540 --> 08:51.269 +I use the European/Indian date format + +08:51.269 --> 08:54.980 +which is %d-%m-%Y. You can also... + +08:54.980 --> 08:56.816 +The language is Indian English, + +08:56.816 --> 08:57.998 +so it will change according-- + +08:57.998 --> 08:59.860 +the numerals change according to the + +08:59.860 --> 09:02.180 +Indian format. Numbering format + +09:02.180 --> 09:04.959 +for invoice number is today's date + +09:04.959 --> 09:06.620 +followed by client name. + +09:06.620 --> 09:07.959 +That's my default. + +09:07.959 --> 09:11.120 +You can customize that as well. + +09:11.120 --> 09:13.574 +Let's try and export this + +09:13.574 --> 09:17.325 +to the subtree. Ctrl-s. + +09:17.325 --> 09:20.579 +So that's step number seven. + +09:20.579 --> 09:22.029 +And there it is, + +09:22.029 --> 09:23.339 +the tax invoice + +09:23.339 --> 09:25.870 +for Dr. Wile E. Coyote, + +09:25.870 --> 09:27.810 +and with a lovely signature as well. + +09:27.810 --> 09:29.990 +[Interviewer:] Well, that's great! + +09:29.990 --> 09:34.309 +If I were to try this out, what do I do? + +09:34.309 --> 09:36.779 +Go to github.com, into my repository. + +09:36.779 --> 09:38.915 +I'll leave my GitHub URL. + +09:38.915 --> 09:42.790 +You can download it use it, + +09:42.790 --> 09:43.848 +and let me know + +09:43.848 --> 09:46.829 +how it pans out for you. + +09:46.829 --> 09:47.632 +[Interviewer:] I have spent + +00:09:47.632 -- 00:09:49.018 +so much time on this. + +00:09:49.018 -- 00:09:50.060 +May I invoice you? -- cgit v1.2.3