
JV B/C
JV B/C
JV B/C E6: Your Value
A lengthy dive into how to figure out hourly rates and considerations for budget planning when you're freelancing on an hourly basis. We also chat about the #msdyn365bc Customer Card, plus talk about why Page design feels like 2 languages in a trenchcoat.
0:00:00-0:00:43 Pre-Intro Talk
0:00:43-0:01:19 Intro Music
0:01:28-0:34:38 Doing the math of what you should charge
0:34:38-0:47:42 A tour of the Customer Card
0:47:42-1:10:52 Page Design - Layout vs Code
1:10:52-1:12:37 Outro
Hey everybody, and welcome back to the gbbc Podcast. Today we are going to be talking about value and going through some of the thought process of how you market yourself price wise and think about all the different things you should be considering for the consultative section. Today we're going to be diving into the customer and vendor card a little bit. And talking templates. And getting back to the development side of things. We're going to be talking about the strange and wild world of page design. So stick around. Interesting, I thought I had gotten rid of the crazies swiping sound effect thing there, but continue to evolve the platform. Alrighty, so I got a fun question that I definitely wanted to take on. I've worked in a number of different capacities in the industry development and consultative and all those different pieces. And I got asked the question of how should I price myself. And Whew, that that led to a pretty in depth conversation. And I realized that we haven't, we don't really talk about that much in our space. There are some really useful utilities when it comes to looking at what the market is willing to pay for employees in the industry. There is a something I refer to fairly often for it because they have access to more info than anywhere I would ever be able to go. The Nigel Frank salary survey breaks down different areas of the dynamics family, by the different regions and roles. I don't think anyone else has as comprehensive a worldwide reach into all of the different aspects of the the industry for figuring out salary. And you know that that is always a tricky sort of question right now, especially with the fact that more and more people are hiring around the world, and someone who lives in Manhattan has a very different financial need, then some of the folks who are enjoying lower cost of living spaces. You know, there's a lot of digital nomads right now that are working remotely in all sorts of places throughout Southeast Asia. Portugal's very popular right now. And a variety of countries are really excited to start to attract some of these digital nomads for that reason, you know, that bring money from out of country and bring it local. So, you know, it makes sense. But your financial need doesn't drive your worth. So it gets into that challenging place as an employer of why should I pay for someone who has a higher need if they're remote anyways. So that gets into its own challenge. But that's a bigger industry thing that we're gonna be able to cover and in this little tiny nook of the world, but weak can however, definitely look at, well, what, what am I worth, and that that can be tricky. The very first thing that I always tell people to do is to take the time to figure out what you need. Yes, understanding what other people charge in the industry is valuable. Like if it turns out you from a need perspective, need 50 euros an hour, and the markets willing to pay you 100 euros an hour? Well, you'd be a fool not to take the 100 euros an hour for sure. Or even maybe meet someone partway and they think they're getting a great deal. So you know, the there is the what is the market willing to pay, but you should know what your floor is. And I think a lot of people who start out as an independent person who have never worked independently or freelance before, don't know how to calculate their floor. So that's what I wanted to dive into for a little while today. Um, you're going to hear me typing a little bit, I am going to be screen sharing some Excel. But we're going to be talking at all through. So don't worry, if you're listening to audio only then you will definitely still see. Or, yeah, exactly, you will still hear all the stuff we're talking about. So the very first place that I go to, which a lot of independent folks don't think through, is you have less time than you think. You know, it is very easy to go well, I 40 hours a week, that's my, that's my time basis. If you do the simple math on that, you're gonna get a very lovely looking number. So if we look at in an average year, and apologies, I do have a khaki keyboard, so we'll see if one of my two dues is to go quiet. So the microphones don't pick it up. But if we look at the number of weeks per year, and we say hours per week is our 40 hours per week, then we get this lovely 52 times 40 equals 2080. That's my basis for how much I need to do my math on right. Those of you who are freelance before or just managed an organization, or even at department are already gone. Oh, no, no, no, no, no, no, don't ever base on that. Well, let's talk about why. First of all, let's say how many vacation weeks per year you want to have. If you're trying to do this for yourself, you probably want to lean towards the heavier side. And cultures vary. Here in Sweden, for example, it's pretty standard to give five weeks per year, which I know is towards the deeper end of the pool. In US companies I've seen as low as two, I'm going to just arbitrarily pick for for some basis to call it. But you also then go okay, well, that's easy enough for that just reduces a little No, you're not done yet. If you're working for yourself, there are also holiday seasons. And typically on average, you'll probably find anywhere from about five to 15 holidays, days per year, you don't want to be factoring and working on you know, Christmas, if you celebrate Christmas, there are plenty of other holidays for lots of other faiths. We just had one last week for Jesus name eludes me, there are a variety of faiths to have a variety of holidays, there are also cultural holidays, you got to factor all that in, I'm going to call it 10 for the purposes of our math, so for our weeks per year, we're losing another two. Okay, and that happens. And unless you're the most amazing, healthy person on the planet, and you've never caught a cold in your life, you're gonna need to also factor in you don't get to pay yourself when you're sick. So you got to factor in sick weeks per year as well. Well, and also if you're, if you are currently blessed with small children, or that's on your near future, don't forget to factor in the fact that you having a small child in your house have a beachhead for every disease that goes around. They have a very underdeveloped immune system, they catch everything, it grows nice and strong in them, and you're bombarded with every part of it. So if you have children double this number, until they're about 10. Realistically, just something to be aware of, I'm going to just put in sick week per year, we'll just do two. So we've now got vacation for holiday for two sick for two, you are also going to as an independent person need to do accounting work on a regular basis that maybe you're going to be super efficient at and you don't need to meet with an auditor, you know how to do all the filings and all that sort of stuff. And it will only take you an hour. That's lovely. I NVu I've done this a lot of times in a lot of different parts of the world. I've run us shops, I've had us employees, I have Swedish shop, I've Swedish and Danish employees, i There's no amount of efficiency that's getting some of these things down to the level that they should be. And even just meeting with an accountant to review everything, you're going to lose some time. I usually treat this in the aspect of a proximately a day out of each month, you'll lose to some of the administrative work of doing all of your filings. Well, we already dropped out eight weeks, so that's two months are gone. So I'll use a basis of we're going to have accounting overhead for weeks per year we're going to have another two weeks disappear because that's 10 more working days just gone. If you were being smart about how you're operating in the space, you probably also want to do do cool stuff like, attend conferences, even if they're virtual conferences, you're probably going to want to go to those. If you're lucky enough to afford, because you should be budgeting for this, if you're lucky enough to afford to go to some of the conferences in your region, or even outside of your region, it's very easy to lose a week or two to conference seasons, because you're going to potentially need to do stuff. So there goes another two. Okay, are we done? I think that's a pretty good basis of things to be thinking about on all the different parts that you're going to lose. So now, if we think about this, this is about 12 weeks, all told, that are just eaten. So total actual weeks per year, is going to, in fact, be our 52 minus the sum of all of these previous ones. Which brings us up to now we're at 38 weeks per year, well, 38 weeks per year is a whole different ballgame of hours per week, right? So let's look at hours per week on 38, which it's too early in my morning, I'm not going to do any math, I'm going to trust the Excel doc. So now we're down to already 1500, roughly 1520 To be exact for people of exact, so we're down to about 1500 hours. Now that's already, we've lost a quarter of the year to just stuff. That's an entire quarter, just gone. Just going through this exercise was a huge eye opener for a couple of the people I've talked to about how do you budget your time and do your value basis, because they think of the 40 Hour Workweek, well, I have some pet news for you who are already starting to do the math in your head on 1500. This also runs under the basis that on your workdays, you sit down at say 8am And you work eight hours, all billable. I don't know how many of you have had the luxury of having that happen. two or even three days in a row, as a freelancer or in an organization where you work uninterrupted, eight hours, just straight billable, day after day. And imagine trying to do that over the course of an entire year, it's not going to happen. If you are lucky, and you're doing work with one big partner, and or one big customer or that sort of thing where you don't have to do sales efforts. It's relatively easy billing because you just send them one monthly invoice. If you're lucky, then you also get to charge for the times you spend in meetings with those people. That will be pretty cool. Some of those partners, that is the case. And if you're lucky, you've got that big fat contract with one big partner, and or one big end user, whatever have you. And you also don't have to do sales and marketing efforts. Well, good on you, that's pretty great. Just as a side note, that's extremely dangerous. If they don't like you, if they get mad at you, then they withhold your payments. If you have only one big giant customer, you're gonna be in a world of hurt at some point. If things just don't go perfect. I have definitely as an independent worked with organizations where they consumed my entire working capacity. And I've had that turned into legal battles. And it was very expensive. And it hurt, you potentially need to have a huge cushion to be absorbed to be able to absorb the rainy day when you're working with one big partner or one big end user. So be aware that if you have the luxury of just having that great one customer, you need to be saving for if something goes wrong with that project, so that you have a cushion of one to three months to intentionally find a replacement for them. And a cushion that if you need an attorney, you can pay for one. I have in my early days for sure been in places where I didn't have the cushion to pay for the attorney to go after the money they owed me because the money they owed me was the cushion that I needed to pay for the attorney. And I have also been in cases where I have won court cases against people that owed me money and they just bankrupted the company and I was Given pennies on the dollar, as it were, and all of that just disappeared. So, when you are freelance you have to plan for if something with my best relationship goes wrong, what is my timeline timeline on being able to survive without that. So bringing this back around to the the the math bases, if we're looking at that wonderful, perfect world scenario, you get to build for all that odds and ends, you have a utilization rate that is a lovely, probably 80, maybe even 90%, we'll call it 80%. So out of a given eight hour work day, most of your time is billable, you only lose a little bit of time here and there to email nonsense, something like that. So we'll call that the high utilization figure. And if you are working with multiple organizations, you do your own sales efforts where you're blogging, you're marketing yourself, you're doing all these different meetings. I have been bitten in the button by you know, estimating what something would take me in development hours. And then I spent more time after the development efforts, validating that there were no bugs in my code, then the time I spent doing the development work. So say it was 40 hours of development work. I have had projects that I have then spent after the contract was over more than 40 hours, with them calling me to say we found a bug in this meeting, go through it. It wasn't a bug, it was something that they were complaining about that they didn't understand that they didn't read the documentation. And I gave them the recordings that we made of how to use it. I spent much more time on that. So my actual on that project was ghastly low. It is way too easy as an independent person to think these are the hours that will take you but there's so much stuff around it. So if we want to be sensitive to those exact sort of scenarios, well guess what your utilization hours in that scenario is actually about 50%. So we've now got a couple of utilization high lows. So if we call it a high hours per week, out of that 1520, then we get 80% to 1520 is a little over 1200. If we have low hours per week, we then are much delightfully looking at 50% of that, that's only 760. Imagine if you tried to build your budget on 2000 hours, and then your effective billable rate was way down near 1800. Or you'd be getting three or four months into doing operations going. Why can I make ends meet? You know, this seems like it should have been enough I priced myself, right. I thought, This is why if you're losing time to, you know, I want to spend an hour here and there just you know, reading about what's new in Business Central. I want to spend, you know, 45 minutes listening to a podcast about Business Central, hey, you know if these are things that you want to do that you can't charge for that time, and you don't want it to eat into your personal time because it's professional development. Well guess what? That utilization low of 50%? Isn't that bonkers of a number. And you'll also, and this is a whole separate thing we'll go into in another session, maybe you also can't plan these sorts of things. I worked for a number of partners who are like our resources. We as we're planning out their utilization rates and planning their projects and all the things that they need to do. We'll aim for about 75% billable, and we'll fill their schedule about 75%. Cool. Let me know how that goes when you get your first support case, and they don't want to work on it. Because four cases, you know, could take four, eight hours, suddenly, all of that non billable time that you had left open in their project schedule. It's gone for the whole week. So yeah, there's there's some dark arts and science to try to even figure out what should you be scheduling to have happen in a given week. And when you start looking at these numbers you go, wow. And All right, let's see we've already burned about 20 minutes so we'll see how much we get to in the second. So there are some other odds and ends that you should be factoring in. There are expenses every three years you should be thinking about a computer You probably shouldn't be thinking about business phone. If you're smart, you are in a place where the tax implications you should be running it as a business, not as a sole proprietor, you should be able to depending on your local laws deduct a lot of things. That includes for example, you know, conference fees and travel if it's travel for yourself rather than travel for the customer. If you are working in the for the first time, you should be looking at business insurance wise business insurance, good thing? Well, there are lots of insurance companies that provide riders for things like if some, if you're working out of your house, and some dingbat manages to crash your car through your wall, and you can't work for two weeks. Well, guess what a lot of insurances will actually provide for replacement wages, I can't work for two weeks, well, okay. Any number of things that are completely beyond your control insurances can help you with those, it varies by what's available in your region. But those are all different things. So on the computer front figure, I'm going to do the math for the rest of this section in euros, just because it's pretty close to parity $2. So that's kind of a one of the wider reaches, obviously, I'm in Sweden, that's in crowns, we have about a 10 to one ratio for euros. So it's kind of easy to do the math on things. So if you figure you're going to potentially need maybe a desktop, maybe a laptop as well, because you should be able to be mobile, but you know that on a regular basis, you're working with things, you can on the computer front, you can figure you're going to spend maybe a couple 1000 euros on a desktop, a couple 1000 euros on a laptop, and they'll age out every three years, roughly. So that's 4000 euros, divided by three across the three years, and you want to break that mentally budget wise into what's your monthly because we're gonna do all these numbers on a monthly basis. So 4000 divided by three divided by 12, that's your monthly Euro allocation towards that hardware. So that's about 110 euros, you know, you might spend 50 euros a month on a phone, I don't know, same sort of thing on the conference fees, maybe you're gonna budget 1500 euros for different conferences throughout the year. For travel, you're gonna budget a couple 1000 euros throughout the year, your insurance, maybe it's 15 per year. And I'm just punching all these numbers in doing divided by 12. So there's any number of other expenses, you can factor into this, you might, for example, really think smart about have accounting services help you call that, you know, 1500 euros for the year or something like that. pulling numbers out of nowhere, there's, I have a counting people that I pay separately. So it's a whole different thing. Counting figures per year, you probably should have an attorney on retainer. Even if you don't make much use of them. Just if a partner gives you a contract, you probably shouldn't be reading that just by your lonesome. So figure, that may mean, on the cheap side, you don't make much use of them. Call it 12 1000 hours per year for an attorney. Again, dividing all these by 12 on screen just to get some figures on here. There's bits and pieces. There's lots of other expenses you can be putting into this. But let's call that good enough for now. And so we're looking at your monthly expense just for some pretty basic, minimal list of things. We're looking at about 600 to 700 euros per month to be factored into things. Okay, now we know we've got a basis for what we look at for some basic expense. All right, and that doesn't include things like books or training or any number of other very smart things you should be spending on. Well, now we get into 25 minutes into the episode we're finally getting to the Okay, so what do you charge for price? Well, it depends. So what I often will recommend people do is start with your gross need. So in your bank account as an individual, what do you need to have in your bank account every month to make your bills? Now just start with that number. And this will be a monthly figure where we're working on monthly just adding that as a notation their gross need monthly If so, okay, so let's say for example, you're just gonna pick a whole number here. 5000 euros a month. That's your gross need. Annual looks at 5000 times 12. Which obviously 60,000. That's cool. Okay, well actually, I'm saying gross Nene. But that's actually net need. So you need my bad I apologize kala early in the morning brain power. So you need to have as a result of all of your things, 5000 euros a month or two, that's your objective? I am not going into this episode. Hey, you know, how much of that are you putting aside for a rainy day? How much are you putting into retirement because you're working for yourself all those fun things, those are whole separate life planning questions, you should have a financial adviser, which is an additional monthly expense. So say you need 5000 euros a month. Don't forget that we also have the expenses per month that we calculated up, and we'll grab that from our other spreadsheet into here. That worked well. grabbing our expenses, there we go. So our actual monthly need there already is a little bit higher. But here's the thing. Most countries also have various forms of taxation. And you're going to need to know your local tax laws in a big way. In the US, for example, you have your income tax for the Federal you might have state income taxes, you also have your own social security contributions. But in the US, you're also potentially going to need to pay self employment tax. Or if you've incorporated your business, you're going to need to pay your corporate tax. Those all add up, you know, the tax rates sound nice and low. And all these expenses do get deducted from your tax burden. But there are still limits. And the same is true in Sweden, we've got you know, a corporate tax on companies. We as employees, as owners of a company are often still employers and you have to pay your employer contribution on all your salaries plus your personal input, all that sort of thing. It varies wildly. I mean, it could be you can pot you can potentially in with really good accounting guys, maybe get your tax in the US down to 20%. And in other parts, depending on how big your numbers get, you could easily find yourself in heavy tax countries, like the Scandinavian ones, where we do have the net tax can be higher. When you're paying all the parts of it. You could see it maybe all the way up to 50. I'm going to arbitrarily pick about 40% taxes. So we have to think about the tax burden monthly as well, which means that we need to take that number that 5000. And we have to go well, we need the apologies this early morning math brain, we need to take that 5000 number and we need to go okay, well, I need 40% More than that, to really make sure that I'm getting my revenue. So probably about 7000. Me, I might even pad this up because who knows what other odds and ends are going to come along. So let's pad that up a little bit and call it 7500. So that's actually our gross monthly is now 40 7500. Okay, well, that's cool. So we've got our gross monthly and now we also have our gross annual number, which is just the 7500 times 12. So now we've got 90,000 euros as our gross annual need. Okay, so already you can see we've gone the other way that we did with our hours, I need 60,000 Well, then you need to be making 90,000 Okay, and based on our hours before I need to be making 90,000 in 760 hours not making 60,000 in 2080. So I will often see people do the wrong thing where they take I need the 60,000 with no expenses factored in, and I need that to be based on my 2080 which I just did my Excel formula in completely the wrong way. So I need my 60,000 divided by the number of hours. So I only need to charge the 30 euros an hour. That's my need. Wow, I can I can charge 50 euros an hour and I'll be making bank. So if we realistic think this one. And when you say okay, well, then what we need is probably about 90,000. And we need to pull that off in 750 hours. Well Goodness gracious, my Excel is not cooperating with me today if you've seen a video on this, you'd be laughing at me took the took only the hours. So if we take our 90,000 and we divide it by the 760. There we go, we see that it actually requirement wise, is 120 euros. So imagine if you had gone I'm going to be a freelancer and I did the math. And maybe just for safety sake, I'm gonna say I need about 50 or 60 euros an hour. By the time you get into your second or third month, you're gonna start going, Why am I not? Why am I not feeling my budget? Something is not right. Well, 118 42 euros per month is a world of difference. Oh, Jesus, please. Okay, yeah, everyone following the video has just gone. Dude, you just did a big mistake in your math here. You did your annual divided by hours. Did I? Yeah. Okay, yeah, no, that's annual hours annual amount. Okay. Sorry, panic there on my Excel driving. So you can see real quick that you know, how you do your math bases, and how you think about how you value yourself, is a real big difference. And if you're lucky enough to instead of having those low figures, which is what I just did the base basis on, if you instead take that high utilization rate, where you're managing get more towards the 80 hours mark, you can take that 90,000 figure and divide it by your 1200. And you can see that 74 euros an hour is a safe ish number. So it gives you a sort of a better sense of what do you got to think about when you price yourself up. And you do need to be smart about this. I did say for example, it really is a smart idea to build your rainy day funds, for your or for yourself for your organization, if you're multiple people. And you know, if you've got multiple people you're going to need to do this math for when you hire somebody to work with you. What is your benefit of working with them? What is their actual cost? And these are some of the things you have to think through in a similar process. The taxes is going to be very different with employees because you as an employer pay a percentage, but they pay some of that percentage too. So the tax rates are different. But But yeah, so I hope this helps people think through what should I be charging? Your numbers are going to vary wildly by what your financial needs are, what your local expenses are, you're going to have to assess what basis do you really want to have your your annual figures on, you know, are you leaning towards the happy rosy picture of 1400 hours? Or are you wanting to safety sanity check yourself down in the seven or 800 hours? You got to think these things through and decide what makes sense for you. Yeah, so with any luck, that was a useful half hour, food for thought for some people. This obviously applies to anyone trying to price themselves up. Nothing about this as BC specific. This is just straight, how do I value my hours. So if you have friends who are graphic designers, web builders, any number of things where they charge clients by the hour if they've been struggling or they talk about not being able to figure out how they should value themselves, point them at this. Nothing about this was BC specific. So alrighty. Well, speaking of BC specific, let's see if we can fit some content about BC into the next half hour since I went on for a good long while there. All righty. We are going to talk today about the customer cars. So let's hop on over to our business. The central environment, don't worry, I am trying to pay very close attention to making this audio friendly. Which I do have some experience with. I grew up with a good friend of mine throughout my youth that was blind. So we got used to working together. All right. So let's talk a little bit about customers. And, and in tangent on that a little bit about vendors, we'll see what we can cover in a good 15 minutes or so. The customer card has all sorts of settings on it. And some of them are brilliantly obvious. Some of them are just info pieces. As we've talked about in the past, we've got fast tabs. And there every single fast tab on the customer card, I believe has a show more just about you. So there are tons and tons of pieces of info about a given customer that you will want to see right up. The minute you open it, one of the first things you've seen these days is a lot of balance and sales information. And you will see fast tabs for some of the basics like address and contact, you'll see fast tabs for invoicing that has lots of information about how you are going to invoice them. You also have a section about payments, which has to do with them paying you not how you pay them. We had a fun Twitter discussion about the wonderful world of payments, there's a fast tab for some shipping. And there's also a fast tab these days for statistics, which is pretty nice. So if we go into the General section, and we show more, we'll see lots of info about like credit limits that we can do, we can assign which sales person, we can do some different controls on that address has all the things that you would expect it to right out of the gate with address and phone number, email, all that sort of thing. It has connections to the built in Business Central CRM system in this fast tab as well, which is a whole little separate tour of its own. The invoicing tab has useful info, if you're doing business with new customers, this is one I'm looking at in front of me is a worldwide one copy of the database so it is not localized to any particular regions. So for example, when we look at the vendor card, we won't have the 1099 fields that the US version would have. And I believe the US version has a different field in place of a VAT registration number, I believe, but not real. Sure. Anyways, in the invoicing, we also have the connections to the posting groups. General Business posting groups helped me see your system know how to connect when I make revenue from this customer by selling to them. Which GL accounts should that sales information hit the customer posting group hits, which accounts receivables should the revenue then be do against because you might for example, have customers that are solid their contract, you don't have to worry about it. So you have an accounts receivable that is your for sure. Or you might have customers that are a little more questionable. Like it's a struggle to get revenue from them, you have to do a lot of collections efforts. And you want to separate that out on your chart of accounts as accounts receivable questionable, which is a common practice if you deal with hit or miss customers, you would set different posting groups for those customers that you're not sure exactly the timing you are going to collect on them. So that's the the super summary version of posting groups. You can also do show more on invoicing and change the currency code you deal with them in. You can also adjust a variety of different VAT elements and the payments fast time rent. Initially, there is only a payment terms. This lets you set up and configure for your organization all the different payment terms. For example, common thing to do is net 30. You can also do do in the current month, I've seen plenty of people who will do due by the end of next month. There are lots of different ways you can configure the due date calculations for the payment terms, but that's where it comes from. If you do show more on payments, you can also require pre payments. You can also have default methods by which they pay you by so when you write up an order, you know do they always pay via credit card, and you're going to see that revenue come in a different way. Okay? Lots of stuff like that. The shipping information, lets you choose some of the different pieces that you might do if you or your customer is multilocation. So if you're an organization where you've got a warehouse in one region or warehouse in another region, you can pre default anytime you're doing business with customers in region two, for example, that you always want to ship from your region to warehouse and you can have that default from here. If they're a customer that has multiple locations, you can set up ship twos, which we'll chat in a minute, but you can define here your default ship do for this customer. You can also decide decide settings like shipping advice, do you and this one, if you're new to BC, and new to ERP that can trip you up shipping advice just means are we allowed to ship partially or only complete whole orders. That's all. So shipping advice, by default is I believe, partial, but you can say complete to prevent the system from saying, alright, we can only ship them parts, you can also control some different things around with shipping agents, you know, there are plenty of customers that maybe they have their own preferred trucking companies or something like that, you can control that there. So there's lots of bits and pieces under the customer card just by itself. And then if we look at the related action under Customer in here. And this is another another place in the system where the action bar can use a little love because the action bar here we've got customer as a group of things right in the action bar itself. And then under related, we also have customers so sometimes describing these two people, it's a little bit of a challenge. We can for a given customer here under this related info, we can set dimensions. That's its own episode, we'll we'll dive into, we can set up bank accounts so that way we know which bank accounts the customer is paying from or if we need to remit a refund to them. How do we want to do that this is typically required or needed for the electronic transfer type stuff. Direct Debit mandates, that's a whole different thing that gets into electronic banking. And that's super regionalised shipped to addresses you can set all the different locations they might want you to ship to contact that connects you into the CRM side of things. We also can set up item references. So if they, if the customer you're dealing with gives you an order, and they only do it with their part numbers for your stock, well, this is where you can put that mapping together for this customer. So that way your salespeople can easily take that order, maybe an Excel file or a PDF, or God help you if you're you're working with faxes. Then you can punch in there item numbers and move right along. And then there's some alternate different pieces that get elaborated comments that you can track some info about them approvals, which is its whole thing. We've got attachments that you can, you know, attach like signed agreements with customers and store those in here. It's a nice to have, but often there's more logical storage components, and document layouts. You can give people different formats for invoices, credit memos, all sorts of stuff. So that kind of is in general sort of overview some of the info about customers. There are lots and lots of other pieces for customers that you can be doing with things you can do invoice discounts, you can set special prices, you can set special line discounts, which can include all sorts of fun stuff like sales campaigns or quantity breaks. And there are also different things you can do around creating prepayment handling lots and lots of stuff around customers. And if we look at vendors real quick, we'll see it's a very similar structure to the card. It's a little more simplified, but you know, same general idea if we look under the related vendor, we'll see dimensions bank account contact order addresses as kind of akin to ship to but then comments, approvals. Again, item references, document layouts and attachments. So same sort of idea. And we also have the ability to set What items does this vendor have for us? What are some of the discounts, they'll give us? What are their prices? All that fun stuff. There's lots of lots more to cover about all those. Alright, well, that was a 15 minute or less whirlwind tour of just what is on a customer card. Quick little extra thing, because it is super handy and super relevant. And a lot of people new to the system are not aware of it. If we create a new customer, it actually has the ability. And this is default configured by default in Cronus companies. But it will not be configured. If you create a new empty company, or you're working with maybe an upgraded one, you can have templates for different customers. So in my case, say I'm going to pick a eu customer, where is this coming from? We've got under the Actions menu, there is a function section, and in here there is templates, apply a template, and save as a template, which are all around the templating idea. If we look at the template list, we will see that's where this list of templates comes from when I create a new one, if we click on the assist Edit next to the code for that we can do the edit function. And you'll see you get a card that looks like a simplified version of the customer card. This lets you set up a whole bunch of info to pre fill for all of your different customers when they're created. So if you're creating things all the time, templates are definitely your friend. And you can. For example, if you're working with a large organization that you know, has 1000 locations and your team is chugging along, making all those, you can make the first one and then come under the action function to save as a template. If you are in an order, you may have noticed, if you're in an organization where people are creating customers left and right and you Oopsy daisy, you made two different customers in your system that are the same, or companies merge under that functions we also have that little merge with so I thought I mentioned it's into his on screen. That's a pretty handy function where you can merge two different customer records together. And I'm gonna let you know what all is going to happen around that. So that's fine. Okay, cool. Well, that's, that's at least some basics around customers. Right? using up our last 15 minutes or so of today's session, a little on the development side of things. Let's talk about the wacky world of pages. So coming back into our Visual Studio Code environment. We talked last time we were diving into development side of things. We were talking about tables and how records work. And we we kind of explained a little bit around that we're running some code and a code unit that was working with record variables and all that fun stuff. Okay, well, that's cool. But how do we how do we make a table make a page rather? Well, pages are an interesting thing. And I think a lot of us in our space, take pages for granted around some of the weird behaviors that we have in pages, and it trips up new people. And we're at the point where we don't even see it. So if I were to make just a random new table that has a primary code, and primary key of code, and description, and we made that text, this is an extension that sample table. For those who are seeing a screen I do use the new table wizard, which is coming from one of the Visual Studio Code extensions. I believe this one's the easy ale dev toolbox is the Al dev tools that lets me just type in a grid of fields. And then I can make some, you know, value decimal, I can make a grid of all the different field names, their ideas, their settings. Cool. So now I've got real simple, real quick, a table called sample text. And I've got a code field that description value, some sort of silly stuff like that. We do have to define a primary key. That's, that's its own own thing. So now we've got a sample table. But worry we don't have anywhere in the system that the user could go see this because we don't have a page for it. Well, let's make a page. I'm going to do it from scratch rather than using any wizards. So we'll come This sample table, sample text page, Nadal? Sure. There are all sorts of discussions and best practices around how you should structure your extension folders and how you should name your objects. And thus how you should name your files. So we'll have a chat about that and probably next episode, because I think that's a good thing to cover early. Okay, so a page object just like everything else in a URL. There are lots of snippets for it. So for example, as I start typing page into this blank al file, I get the IntelliSense popping up saying okay, well, here's a page type, we could do page customization page extension. That's cool. If I instead of typing page type T page, I'm going to get all of the snippets from the Al language extension. And because I have Waldos, Visual Studio Code extension installed, I also get some of the different snippets from Waldo that if your IntelliSense pops open, and you just see the list of all of the different snippets, but you don't see the content of that snippet. On the right hand side, when you mouse over the row you have selected, there's a read more, and you can preview what the snippet will look like. So if I typed te page and did down arrow, I will see that it notes that is a page of type list. And on the Read More section, I can see it will make a new page with an IB a page name. And it's going to give us some properties and some basic layout, some basic actions, all that stuff. So I will make use of this snippet. Sounds cool. If we delete the ID and hit control space, if you've got the the Al language, we'll grab the next available object number in your range. But if you also have a URL object ID ninja, you'll get that little pop up we had in the right, because we can potentially share our object numbering info with other people we're developing with to make sure we don't both make 5100. So that's its own delightful episode. So we'll call this sample text list. And we got to put quotes around it. So we'll put some quotes around the name here. There we go. Well will definitely have a best practices talking about object naming. Okay, so now, looking at the anatomy of this page, object that we're going to be seeing here we are first line have, what is the object type? What is the object number, and what is the object name. That is your basic HTML structure. You'll notice too, that this is a funky little Markup Language. It's not JSON, it's, you know, it is using our curly braces for sure. But it's also not exactly a programming language. It is a kind of markup language. I'll talk about why that why I'm noting that. So if we look in the curly braces, the very first thing we get is we get a list of some properties. These properties are different assignments. So for example, in the snippet, because we had taken the list type, it created line three as page type equals list with a semicolon at the end, because this is a semicolon ending Markup Language. If we mouse over any of these different properties, we will see some of the info from help. So we see that page type is an option. It can be a card list, a role center, blah, blah, blah, we can click on Get help and it will drop us to the Business Central Help page for the page type property. All of these little options here these are properties of the page and it knows that based on the fact that these are lines at this first level directly under the page, we have some required things like what type it is. We have application area and usage category which are worth their own discussion. But where are we getting the information pages are meant to display info from a table. So the source table is equal to and we see that this the snippet automatically filled in table name. Well, source table eat goes table name, well, and table name isn't valid. So it gets a real red underline on that. If we just do Ctrl, delete that and do double quotes and then Ctrl Space, we normally get some IntelliSense. That tells us a little bit about what our options are. I stand corrected, no double quotes. If we do Ctrl Space here, and we grab, start to type the name of our object sample text, we get an IntelliSense drop down list of all the tables that it knows about. If you don't get this list, it means that your system has not downloaded symbols correctly. So it heads up. Okay, and we've got an additional section under the page object that defines a layout section. If we collapse the layout section, we'll also see that we have a section for actions. So this defines this describes to Business Central, what we want to appear. You'll notice this, this is not a WYSIWYG, you know, What You See Is What You Get Page Designer, because we are just generally given some rules of how to describe to Business Central how it should render information. The reason for that is because, yes, we could potentially preview what looks like in the web client. But guess what, there's also a tablet client, there's also a mobile client, this page type could be API, and then there is no UI. So we have the responsibility to describe to Business Central what it should do with things. And it helps to understand that because you might get the question Oh, well, you know, can I drag this around in the order of things? No, you are, you're utilizing syntax to describe the sequence of things. So in our layout, we're giving a whole bunch of descriptive information. And we're saying that within the area section of the layout, called content. And there's lots more pieces of this. If you look into the page type, there are specific areas. If we delete content, and we have just area open, open parentheses, close parentheses and do control space, we'll see that we get the option to do are we doing stuff that's going to be in the content, or stuff that's in the fact boxes, so we're doing stuff in the content. And then within that area, what do we want to put in here. If we, after the curly brace do control space, we can see we can do some properties to the area. But these are then the valid different parts that we can put on to that content area, we can put charts, we can put fields directly on the content area, we can also put groups, which is what the fast tabs are, if you're doing roll centers, you can do Q groups, we're doing a list. So we're doing a repeater part, we can also do a part, which is how you bring in other pages onto one page. So for example, the sales order is a card, kind of a card type called the document, where we have parts that are fast tabs up top and then we have a repeater for the lines. So our template gave us a repeater. And then we need to give that repeater a name. And then within the repeater we define the columns by marking up the field keyword. One of the things that I've seen trip up newer people working with things is when we're defining a field and we say field, open parentheses. The IntelliSense will show us that our tooltip the tooltip will show us that field takes two components. It takes a name, semicolon, and then an expression. The name here means the almost like a variable. It's actually the name of this field control. So that if we need to do programming against this particular displayed field, this is the name that we would use for it. Then the expression is where does it get the content of that field that it is displaying to the user. It is very common for the field name to be the same name as the content that we're getting. So for example, on our sample table, we had a description. We had a field called Disk option. So it would be very common to have this field called description, and then a semicolon. And we do rec dot description, because we want to get the description expression field, from our current record of whatever is being displayed in this repeater. Then we do curly braces for that field object, and we set some properties on the field object. And if we do control space, we'll see lots of different options in here. There are many, many options for field properties. So for example, application area is still currently required. That's just one of those things of if you don't know what to do with application area, then you need to include it but set it to equals all. So why I'm differentiating that this is a little bit of a markup language, is because things get really weird. And I'm gonna go a few minutes over today to explain that one. What I mean by that, we'll do a separate section talking about fact boxes and actions on a page. So if you're wondering how that all works, don't don't worry, we are we're going to cover that. But that's going to be a separate episode, I think. So the one of the things that I've seen confused people is this markup language that we're using to display things on a page has different rules than when we're programming code for this system, you'll notice that we have property assignments that just are using the equals, so application area equals all semicolon. That's pretty close to the programming language rules that Al uses, but it's not the same. If we wanted to see an example of what I mean by that, let's say we were going to want to have something special happen on description, that whenever user punches in a value into our sample text description, during the validation process, we should do some extra logic on that. So to do that, on this field on the page, we would do a trigger inside of the field as a property. And we have a list of potential trigger events. The triggering and eventing system I think is going to be next episode, because we need to understand that to move forward with the platform. But here we have got four triggers on a field we have on after lookup on after assist added on after drill down are three common ones, depending on what type of field that is. On control add in is a whole different ball of wax dealing with control addons. And that's its own thing. On lookup lets you do some special controls around how you want to pop open info, but what we're looking for the last one on validate. So we do this trigger on validate, open and close parentheses here. And you'll find it very frustrating as a new person, you would think that the next thing you would do under this trigger is do a curly brace just like all those other things where we did area, you know, curly brace, repeater, curly brace field, curly brace, trigger, curly brace, no, no, no curly braces don't work, you'll get a whole bunch of error messages here saying syntax problem begin expected and expected and expected bla bla bla bla bla, who whole bunch of stuff goes crazy. Because triggers are using the L language, not the page markup language. So we have to use begin ends, curly braces are no longer our friend inside of triggers. We're programming not doing the markup. And so we have to use a whole separate rule about that. I actually have a article on the spare brain website about this. That talks about the challenge of this one, I refer to it as Dr. Owl and Mr. Cow. Because it's bizarre to go from this markup language to a programming language. They effectively work in two different ways. So if I say for example, have I'm going to do something bonkers that whatever the user types, we're going to replace that with some other text. We're making a trollee sort of extension, I guess today. So whenever they validate it, if, say, the user ID equals Hanneman, and I'm just hard coding because I'm just trying to go quick here, then begin and I'm just Using an extra bunion, and normally we wouldn't do this first single thing. And then we want rec dot description to equal wall admin. And there we go. So anytime the user is admin, and they're punching into description onto this page, we're gonna replace it with law admin. Well, syntactically, this whole chunk of code is a different beast. When you've got trigger begin, we do an if statement. And we're doing a comparative equals inside of this if statement. So we're saying if the user ID equals admin, then and if we want to do a sequence of different actions, as a result of this, if being true, we don't do a curly brace, we have to use the keyword then. So for those of you coming from other programming languages, you might do if condition, and then just do a curly brace stuff happens. We don't do that. Even though the markup language might make you think it works that way. Now, we're having to work the old school sudo Pascal way. So if conditions, then and now a syntactical grouping pair begin and, and will also notice that in the properties, we did application, and we did straight equals all. But down here in the code world where we're operating under the old cow, Pascal style language, when we set the Description field to a value, we must use the colon equals assignment value, because it will interpret req dot description equals quotes, blah, blah, blah, that's a comparative equals. So that will not work. So it throws people off a great deal. And I thought it worthy of its own little episode very early in the beginning here, that when we're dealing with reports, we're dealing with pages, and we're dealing with queries. There are many times where we're doing syntactical markup language, which operates under completely different mechanistic rules. Then, when we're doing code type situations, like we did in our previous development section, where we had triggers we had begin and we have, we have almost no markup in a code unit, because there's nothing that we're describing to the system about what it should be doing. We are giving it code to act on. So that messes up a lot of people who are new to developing with this system. It is two programming languages in a trench coat. So that's fun. And if you want to completely bend your brain, do be aware that you are being given two programming languages and trench coat which are standing on top of the shoulder of C sharp that this gets compiled to on the platform side, which gets while it's transpile into C sharp on the platform side, rendered to the UI using a whole bunch of TypeScript. And the calls to the SQL back end are done via SQL calls that are doing lots and lots of unions. So for our perspective, we interact with the two kids in the trenchcoat, but they're standing on about five other kids. So there's a remarkable amount of programming languages involved in the platform of this whole whole thing. Yeah. Okay. All right. So just for those of you who are looking at some of the visible elements of this, I'm gonna go ahead and publish this tiny little, we just added a new table, a new page, I'm just going to publish it for the laughs for those who are watching along to actually see that it does what it should be doing. To see how this markup language renders. It should just be a list page we can search on. And we actually will not be able to find it, I believe. Let's see here. If we log back in because, of course, you know, business central doctors log you out automatically after about 20 minutes, and we definitely took longer than that. I believe this won't be available in our search. No, no real. Okay, cool. So here's our sample text list. And we see we get a repeater that has a column for code and a column for description. And we can edit this list and we can go ahead Lou as our code and whenever we punch in his description I am super, because of that code. It should alter that. Ah, okay. In our code here, we did really lazy fast coding where we said if user ID equals admin, well, I believe the official name of this account is admin uppercase. So our troll trolled ourselves where we're uppercase admin and not lowercase admin. So that's fine. Okay, but that showed at least you know, how it shows up as a description. There are lots of other many, many other pieces to page design. But I wanted to cover a quick talk to the concept of doing the markup for layout for code for triggers, and events and all that sort of stuff. Okay. Well, we went a little bit over, but we went over a lot of things, too. So I hope the first half of this the first half hour or so, going through thinking through all of the different expenses, the way you need to market yourself the time that you're going to be spending on producing product. Think about all those different pieces, make sure you're valuing yourself correctly. There's a whole follow up to be had on how do you compare your value to the rest of the market space, that's a whole different beast. We also covered the customer card and some basics just to cover at least understanding the structure of things, how to look at the templates of it. If you didn't see last week, it was all about inventory and the item card. So lots of content there. And we finally got back to our Visual Studio Code environment. We're talking about the basics of page markup language. So with that said, I hope everyone has a good day, wherever you are, or whenever you're listening to this. We do post these all on this fair brain, YouTube, it will help us out a bunch if you made sure to subscribe to that. We're trying to work close to the 100 mark so we can get a nice URL. And that would be a lovely thing to do. If you don't follow me on Twitter, we'll be doing lots of news in the next 60 days as well about new things that are coming so make sure you pay close attention, I guess. And with that, I will see you all later. Take care everyone. Bye
Unknown:bye