In my opinion, there is nothing more complicated than the use of modern technology in real life. Any program, any algorithm in its “pure” form is a fairly simple thing in the ideal case. It turns out to be slightly more difficult (if it is possible in principle) to directly interface such algorithms, implemented by different teams. Even more difficult is the processing of data generated by other programs. The most annoying and difficult thing is to make it all work in the real world, with data generated by unpredictable and chaotic processes of our reality. Because the algorithm and its implementing program in any case constitute the means of the ORDERED data processing. And our world, as it is now considered, is rolling only in the direction of increasing disorder.
Automation of retail trade is a task from this area: an attempt to process data flows in an orderly manner that poorly comply with formalization and ordering. Well, or very strongly resisting. Heh, as if they have intentions.
In my previous
article (How to and how not to automate trade), I pretty messy dumped a lot of things in a heap. He praised and scolded software to automate sales in the distribution network. Refine: in the commercial network of pharmacies. And he promised to tell you how best to make an inventory.
Today I will tell you how we conduct an inventory at pharmacies, and what icebergs are waiting for our Titanic along the way.
This time I will try to paint the article with pictures and write sentences with fewer words.
Who cares - welcome under cat.
So, inventory. First you need to understand what it is and why it happens.
Inventory is such an event, as a result of which we get a reasonable quantitative comparison of the actual balance of each item of goods with the intended (“accounting”). Accounting is obtained from the results of the previous inventory by summing the receipt and expenditure data on the documents. Where discrepancies can come from is a separate question, but believe me, they come from. Their scale depends on the discipline and honesty of the staff, software usability, correct operation of the equipment, and a lot more from what. In most pharmacies that are automated under my leadership, now the inventory runs with discrepancies in the amount of goods for 100-200 rubles. This is with an average turnover of 1-1.5 mln. per month. We now rarely take inventory, about once a year.
In the inventory results there is a bad deviation both in plus and minus - for this is a deviation from the data of the automation system. And this system is being introduced not only in order to “beat the proceeds” faster, but also to provide data for decisions about the development of trade, directions for expanding or narrowing the range, to monitor the defects in names, groups of goods, expiration dates and falsifications. Here the question of principle is whether the system and the data it outputs can be trusted.
So, the inventory is carried out, the accounting balance is brought in line with the actual, "the innocent are encouraged and the innocent are punished." And again we trade until the next inventory, we get gradually diverging actual and accounting balances. And so, theoretically, to infinity. Well, or at least until the closure of the company.
But what is the primary starting point? Where did the first accounting balance come from?
From the primary inventory. In principle, it is no different from all the others, just at this moment the accounting balance is zero. But technically it differs very much. To understand what - you first need to understand how any other is done - after it.
Normal inventory
If anyone
asked , we are identifying the goods according to our internal bar code (CC). This is an EAN13 standard code with leading digit 2.
Such an unambiguous identification allows us to take into account the goods up to the delivery (party). And the batch information contains a reference to the name itself (or, more precisely, to an element of the classifier of goods), series, shelf life, price data, and much more. And it is important to keep records up to the parties, because no one wants to get expired medicines, because, as it was correctly noted in the comments, “citizens are at stake and the life and health”. And it’s illegal to sell expired drugs.
Therefore, we must carry out an inventory with accuracy to batches. And then suddenly the overdue askorbink remained in the actual balance, and the baby would be loved by someone else. Or the corn will be stuck with an expired plaster.
The attentive habrayuzer already probably independently came to the conclusion that the process of ordinary inventory is utterly simple: it is enough to count the internal HQ from all packages, putting down the number as one. Then collapse these data, grouping by HQ and summarizing by quantity - voila, the actual balance is ready. It will remain with the identification of the CC with the credentials. And then encourage and punish.
And now the features.
Understandably, the inventory process implies that the pharmacy is closed at this time. Everyone saw the hateful word ACCOUNTING on the door of the now so necessary shop? I hate that word. It’s like getting a refusal from a girl: you go, you get ready, you look forward to it, and you - the turn is from the gate. Makes you feel like a loser.
Well, in general, the pharmacy is closed at this time. And I would like this state of her to last as little as possible. Well, if only because at this time there is no revenue, if the feelings of the sewn-off buyers do not bother anyone. Therefore, those four (this is in our running pharmacy itself) jobs with HQ scanners are catastrophically insufficient. Therefore, we use the so-called data collection terminals (TSD). At our disposal at the time were
Casio DT-930
This is a very interesting machine: in her head there is a laser emitter and absorber.
As an absorber, it reads the CC, and the radiator radiates it. Well, in the sense, the reader of the SK is built into his head, which among other things supports EAN13 (ek nevidal). So we don’t need much more!
Included with it is a set of standard configurations governing the process of data collection (in some you need to enter a price, in some CCs it is analyzed as containing data on the weight of the goods, there are many more options). To our misfortune, the simplest configuration, stupidly collecting HQ with an indication of the number, is not among the standard ones. But to rivet and (more importantly) sew up your configuration, you need a Standard license. The basic set of TSD includes the license of the Demo, with it you can not download your configuration. This is a pitfall for those who decide to use these TSD.
')
If at all to talk about the TSD as a means of collecting data on the inventory, in principle, more than this Casio, and not necessary. Although if we were not an “ensemble of poor people”, I would be happy to use modern technologies of wireless data transmission and would connect the TSD with the accounting system directly. But so far only in dreams.
So, data is collected on this machine in almost the same way as described above: HQ is scanned ... and the quantity is set. This is the number one pitfall when using TSD. When there is an opportunity to put down the quantity, you will not force anyone to count a hundred allegedly identical barcodes. For example, in a box with naphthyzine bubbles. And check that they are the same - even more so. And the same drug in different batches - and the price is different, and the shelf life ... Therefore, the inventory is not a panacea for discrepancies in accounting and actual balances. And definitely from the so-called report does not protect.
For non-specialists, I will explain: a transfer is a universal abusive word, which is used instead of the word p @ # $ c when describing situations with a discrepancy between accounting and actual balances. It can mean both a real transfer (when a product of one sort is counted as a product of another variety — that is, for example, if instead of ten packages of Viagra, listed by counting, there are ten enameled pots on the shelf), or a “transfer” within one and the same product, but by lot (that is, by series, shelf life and price). And in the mouth of a person who does not speak Russian well enough, this word can mean exactly what I have closed with unreadable characters directly, that is, for example, there is generally a shortage (this is when the product is not enough) or surplus (this is when, in fact, the product is too a lot, but we remember that it is still bad).
Returning to the usual inventory, suppose that the data on the TSD are collected quite accurately. Then, when loading data from it, we now get something like this:
2001000291205;5;
2001000302925;6;
2001000242405;2;
2001000308515;1;
2001000245512;2;
2001000230228;1;
2001000312085;5;
2001000177349;5;
2001000017739;1;
Simple text file. This data is easily downloaded to the accounting system and attached to the current inventory data. M-Pharmacy Plus knows how. When they give you a chance to try 1C options, I’ll see them too. But from the inventory on other systems, I deliberately denied: too much of a hassle, after all, I am not ready to spend all day on non-native pharmacies.
I almost forgot: here is another pitfall. An attentive reader will notice that all of the HQs here are 13-digit. And this is correct, this is standard. But here in the accounting system, they can be stored with a departure from the standard. Specifically, in the M-pharmacy + they are stored without the last check digit. That is, 12-digit. What kind of coincidence can we talk about here ?! Well, how can I teach you how to write a script that cuts the 13th character in this file? For those who wish, I can give it, it is written in javascript for me, it runs on all the text files of the directory in which it lies. There are no checks that the file has already been processed (that is, the CC is already 12-digit), but this didn’t cause any problems, so I don’t see any reason to embed such a check in the internal use script. Another thing - if I had to sell it. But then I would probably first think about copy protection. And then he would immediately begin to cost not 2kop., But some 20u.e ...
Well, then everything is simple: the system summarizes the actual inventory data for all sources, considers the discrepancies, and then it is possible to draw up a deduction and capitalization document using these discrepancies, display reports and regulated printed forms of the inventory.
Primary inventory
Well, what is the primary inventory different from the usual? That's right, the lack of internal CC. In the entire pharmacy, there is initially no internal CC. There are only factory ones, but
here everyone silently agreed that their use is almost unrealizable.
This means that we are faced with a more difficult task: it is necessary to recalculate a product that, given all that has been said
here, is not well identified.
Well, what to do, it means that it will be necessary to identify him by the very methods that are described there.
First, we formalize the problem.
As in any accounting system, a business event is registered with an object called a document. The document stores all information about this event. In the case of the primary inventory, this will be the document of the primary posting of the goods. In any system, it is called its own way and looks its own way, but the meaning of all these options is the same: it is necessary to list all the goods that are in the pharmacy with the largest number of accounting parameters: quantity, retail price, purchase price, VAT rate , the expiration date, the supplier (and suddenly it is necessary to return), the batch series, the date and number of the incoming invoice.
So, we come to the pharmacy, start the inventory, and begin to enter the goods ... Then immediately stupor. Goods are elements of our classifier of goods, which must either be selected manually or use accelerated input through some identifiers with the possibility of automated input. The name on the packages is not written in the same way as in the documents of the suppliers (at least the dosage or quantity in the package may be indicated in the instructions at all, and the name on the package may be advertising, but not real). And the SK scanner cannot read letters. Enter names from the keyboard? Edak is not even a week, but a month will be spent on implementation. Try the factory SK? Well, I tried for the first time. I send for bitter tears of repentance in the
previous article .
And here it is necessary correctly.
First, do not go to the pharmacy. Correctly read, the initial inventory does not start at the pharmacy.
What we lack for inventory? Internal CC So let's do them! But not for the goods that are now in the pharmacy, in order not to identify and shuffle it for a whole month. And on the one on which we can stick them without closing the pharmacy. Let's make the supply manager and the acceptance department in the pharmacy work a month before the inventory. Let the manager draw up the parishes, and Aunt Tanya, at the reception at the pharmacy, glues our HQs to the goods all this time, as if we are already selling them. The result will shake the imagination: in a month, 90% of the goods in the pharmacy will have our internal CCs!
How can this be? And everything is simple. Monthly pharmacy turnover is approximately equal to its average balance. Well, approximately within 10-15% deviation. This is an empirical pattern that I noticed in the pharmacies of our network. If it is different in other networks, then it will be necessary to proceed from this “differently”.
And in the pharmaceutical trade there is such a feature: you can not take the goods for years to come. After all, most expiration date is limited. Usually stock is ordered and delivered approximately at the rate of 2-4 days. This means that only weakly flowing and expensive drugs will not be sold in a month. There are only a few of them - just 10 percents are there. For the pharmacy is unprofitable to contain a product that does not sell well.
From here it turns out 10%. The figure is inaccurate, of course, and depends heavily on the method of procurement of the network, on the discipline of the personnel of the outlet, and a lot more on what.
The underwater stone is not the number that is. In order to turn all this, the pharmacy will need to “implement” the automation system from the very beginning. But selling there until you succeed. And from the point of view of the staff, this looks like a useless burden, having no basis, and a waste of energy for the same salary. Decided administratively or humanly, in the long evenings of conversations and explanations. Although, as experience shows, only administratively.
From the point of view of the accounting system, we have not sold anything all this month - well, let, in fact, everything that is not on the shelves will be written in inventory. And 90% of the goods will pass the inventory quickly and without problems, according to the “normal” inventory.
What to do with the remaining 10%?
And here we can’t do without the tedious procedure of entering goods into the balance account manually. Several options.
- It is possible to retroactively import all the documents for which these 10% of the goods were received into the automation system. The path is difficult, but with proper order in the company can "ride". The procedure guarantees the possibility to find these documents and their electronic invoices (EH, described there ) and the work of the manager will be reduced to the usual procedure. It is hardly worth arguing that such an order in a company is an extremely rare phenomenon, because the probability of competently turning this trick is very small. But if this happens, the merits of the mass. For example, maintaining the referential integrity of accounting, which is very important, for example, when taking into account the cost (if you are interested - write in comments)
- During that same month, it is possible for a special person to “watch” at the facility and somehow track down a poorly divergent product, and, again, start it up manually for the remainder by a long and tedious search by name in the classifier. The rest that this person does not track is to enter in the same way, but already on the day of the inventory.
- And finally, the most reliable way is to enter all these 10% on the day of the inventory. At this moment, a posting is usually entered, which indicates the minimum information: a link to the product, the retail price (who will now find the delivery price, then?), The expiration date, the series (and sometimes they are not entered), some more vital accounting records data.
The path is of course the most reliable, but far from the fastest and, if poorly prepared, can lead to a process stretch of two, three or some days.
Let me remind you that all these options are evaluated for quality in terms of speed. So that as few customers as possible feel like losers, and so that the primary inventory does not stretch for a week, as is guaranteed to happen if the month of preparation is not included in the action plan.
In conclusion, it remains only to mention the almost ideal in terms of speed automation of the pharmacy. This is when the inventory itself as such is absent and the actual balance is considered to coincide with the accounting one, and the internal CCs are immediately attached to the entire product. This happens if the pharmacy only opens and all the goods are purchased or transferred from the already automated pharmacies of this network.
The goods that are being moved from another pharmacy are already ready for sale: a SK is pasted on it and it is wound up for the rest with a transfer document.
And the goods that are purchased, simply go through the usual way of posting through the order, the purchasing manager, quotation and “shading”, as if the pharmacy had been working for several years. True, the volume of this purchase is quite large, but this problem is solved by increasing the attire of Aunt Tanya at the acceptance for the week of implementation.
And finally, as promised pictures. As an exploding helicopter:
