Friday, 12 October 2018

Payroll Software in Papua New Guinea

From the word "Cinch" which means, easy; and from the word "Productivity," the CinchPro payroll came out with an aim to ease out the tediousness and the painstaking workflow of working on payroll reports that HR does every fortnight to meet the payroll deadlines. Designed to be a straightforward and to be a very user-friendly program, CinchPro is the robust solution to challenging payroll procedures.

Here are some of the examples of what this payroll program can do:


Main Menu. Sleek ribbon menu and big icons and a dashboard display that keeps track of the current workflows.


Employee Masterfile. Easy look-up of employees. With picture and a history of pay rates. It also shows the OFF day schedule.


Absences Reporting. Easy viewing of absences incurred by employees with display of used up Medical Certificates, off days and actual time per fornight from attendance software.


Item Booking Module. CinchPro payroll comes with a module for distributing bread booking if the shop using this program are also selling bread or any items that staffs can sometimes book for pay deduction later.


Item Booking Module in actual operation (with pos printer).


Sewer Jobs. This payroll comes with a module for paying staff that are paid not by the hours but by the pieces they make. This is perfect if the shop that is using this payroll has a factory that produces school uniforms or the likes where some employees in the factory are paid by the number of uniforms they make.


Timesheet Module. Quickly view employee's time records with CinchPro's timesheet module. 


Loans. CinchPro payroll comes with a module for handling loans by employees to the company. It's automatic deduction/pay features makes it easy for the company to take back payments through salary deductions.


Leave Pay Reports. CinchPro payroll can produce many reports and it can also generate reports for Leave Pay Candidates at one's whim.


Payroll Sheet. Easily export formatted reports to MS Excel for customized printing.


Leave Planner. CinchPro payroll comes with an Annual Leave Planner that makes it easy for the HR to create and approve leave requests. It has an easy to read graph and month views that highlights the days of leave.


Help/Manual. CinchPro program comes with a help file that has an easy to follow instructions, making it easy for the user to operate the system.


Our company is using CinchPro Payroll version 3.0 for more than a year now and a biometric attendance system bundled with it for over four years now. We have two business locations where this program is installed and serve more than 250 employees and by far things are going well and easy for us.

Monday, 25 June 2018

Some Programming Stuff

When time permits and I'm in one of my agreeable moods, I usually write a piece for my technical blog called Through The SQL. That blog is all about software programming and a few bits of troubleshooting stuff. Anyway, here's a post that I wrote for that blog sometime ago with its original content.
In Visual Foxpro 9 (VFP) and it’s lower versions, there exists a logical field with which a programmer can use to have some kind of a digital flip-type switch that we regularly use in queries or in a control, like a checkbox, for example. If one can imagine how a light switch works, the idea behind is the same with that of a logical field. The apparent difference emerging from the point being that is, the usual ON and OFF status that we regularly see on a common household light switch is omitted, the logical field in VFP uses a boolean value of either .T. or .F. instead, with “.T.” representing the value for TRUE and “.F.” for FALSE.

So it’s kind of like when your dad asks you if you have left the garage lights on overnight, you may probably hear, “Is it TRUE that you have left the lights on last night?”

Anyway, Creating a logical field in a VFP cursor is as simple as this.

Create Cursor curTest (field1 l)

Select curTest
MODIFY STRUCTURE



But in MS SQL Server, with versions like 2008 or 2012, there is no Boolean or Logical field type. This is probably the reason why I see many software developers turning their trust to characters and integer types just to work around this inadequacy. 

For instance, a programmer can use several of the INT (integers) type field just to represent a value of 0 or 1. Because 0 and 1 can both respectively represent the ON and OFF nature of a basic switch. The idea makes sense until you add another value, like “2” then it loses the foremost characteristic of being a “flip-type” switch. 

The Workarounds in SQL Server


I’ve seen programmers use the int type, which has a range of -2^31 (-2,147,483,648) to  2^31-1 (2,147,483,647) and can take up storage of 4 Bytes in the table. Others use the smallint type, of which range is shorter than the int type but takes up 2 Bytes of storage space. There is also the tinyint that has a range of only 0 to 255 and takes up one Byte of storage space.

One thing to consider when you are feeling a bit determined to use these INT types for a simple switch is that each column of int created in a table will take up the storage space that I mentioned above. For example, if you have two columns of a tinyint field, each column will respectively take up one Byte of storage in a table.

At the other end of the spectrum, there are also those who use a character field to represent a switch in a similar fashion. These programmers, like I do in the early stages of my programming career, have liked the idea of using CHAR(1) type field to mimic the purpose of a logical field. The reason being is that it’s a straightforward solution and it’s easy to read. All that one needs to do is update the char field with a string having a value of “T” or an “F” character. 

The downside of using a char(1) field, however, is that it can take up other characters as well like “A” for instance, aside from the “T” or “F” characters. Also, each char(1) type column’s value in a table will take up 1 Byte of storage. Therefore, if you have two of this column in your table, the values will take up 2 Bytes and so on.

What I Think Is the Right Way to Do It


The best thing to do, in my humble opinion, is to use a bit type field in MS SQL Server. This type accepts integer data type like a bit value of 1 or 0, and it can have a NULL value as well.  

In this example, I’ve created a temporary table with a bit type field. I then inserted a 1 value.

If (Select name from sys.tables where name like '%#testTable%'is not null
      Begin
            drop table #testTable;

            create table #testTable (field1 bit);
     
            insert into #testTable (field1values (1);
           
            select field1 from #testTable;     
      End

The advantage of the bit type is that it can automatically convert the string values TRUE and FALSE to bit values.  The “TRUE” becomes 1 and “FALSE” becomes 0.

If (Select name from sys.tables where name like '%#testTable%'is not null
      Begin
            drop table #testTable;

            create table #testTable (field1 bit);
     
            insert into #testTable (field1values ('TRUE');
           
            select field1 from #testTable;     
      End

Sending Updates from Visual Foxpro


Luckily, MS SQL Server will convert the boolean value sent from Visual Foxpro by way of SQL-Pass Through or (SPT) connection.  

For this example, I have a table that I use for keeping LEAVE PAYS. It has a bit type column named isLeapYear. Let’s see what’s in it.


Notice that all other values in the isLeapYear column has zero values except for what’s in the fourth row, which has a bit value of 1.

Now, let’s try and change that into 0 (zero) by sending an UPDATE from Visual Foxpro with this command.

=SQLExec(oHandle.nHandle,'Update MyDatabase.dbo.MyTAble Set isLeapYear = .F.')




Now, we can see that all of the values in the isLeapYear column became zeros. 

Showing the Results with a Checkbox Control in a Grid


Let’s change the value of the fifth column, in the first row to 1. Then we’ll pull the records from MS SQL Server to a Visual Foxpro Grid that has a checkbox column.

=SQLExec(oHandle.nHandle,'Update MyDatabase.dbo.MyTAble Set isLeapYear = .F. where lpID = 9')





 So, this is how it should look like now. 


After we pulled the records from SQL Server, this is what a grid with a checkbox control would look like. Notice that the checkbox is automatically ticked because the underlying value in that column is .T. while the rest have .F. values. I will discuss how I created this checkbox in a grid  on a new post once I get a free time again.

Final Thoughts


Visual Foxpro is somehow lucky to have found its Logical values automatically converted by MS SQL Server to bit values. 

But another point worth considering for using a bit type field is that the SQL Server Database Engine optimizes storage of bit columns.  For example, if a table has less than 8 bit columns, all of the columns are stored as 1 byte. Having more than 8 bit columns but less than 16 will be stored as 2 bytes and so on.

As opposed to using an int type that always stores 1 byte or more per column, this is a great way to conserve server storage space if one is too concern about data normalization and storage conservation. 

Have a nice day!

Friday, 11 May 2018

A Bout of Chicken Pox

Time heals everything, even time itself.

I heard a speaker who once said that if you wanted to know the value of each second, ask someone who had a close call with accident. I never had the chance to ask one. But I might have a luck in asking a random husband that I see sitting next to a women’s clothing shop in the mall. He probably knows the true value of every second he spends to get by the time waiting for her wife to return from shopping.


This is what my scar-ridden face looked like in the aftermath of a Chicken Pox attack. The picture is a bit over-exposed so much of the scars aren’t visible but if you look closely, there are lots of dark spots around my temples and cheeks. The person behind me is Prabin, our new Nepali manager. We hitched a ride on the back of a small truck on the way home.


It’s a good thing that we only get infected by Varicella Zoster virus a.k.a. Chicken Pox once in our life time. No one likes to have troublesome scars from time to time. But according to the doctors, even after a successful bout with the virus, not all of which are eradicated from our body. Some of the surviving viruses can hide in our body and avoid the detection of the immune cells. Later on in life, when our immune system gets weaker due to old age, they can travel back to the skin surface and inflict on us a slightly altered version of skin condition called shingles.


Setting what the palindrome was saying aside; these days, I am following a not-so-strict exercise routine. I usually exercise on every other day. The physical regimen involves riding a stationary bike for 30 minutes, followed by doing three sets of different dumbbell exercises. I finish the routine by working on the abs roller. 


This is the second time that I have peeled off a medium-sized pineapple. The first was when I was nine years old. I don’t like eating pineapple that much not because peeling its spikey skin off is a bit challenging, but because I didn’t like the taste and texture.  


Here’s a fake tattoo that I drew on my left arm using a small brush dipped in an India ink. I find it difficult to draw on the human skin as opposed to drawing on paper. Unlike the sedentary paper, human skin is elastic, it responds to room temperature and has contours that differ from person to person. Someday, I’m thinking of retiring as a tattoo artist. But given my age right now, I would be too old by then. 

That begs a question, who would want to have their skin tattooed on by an old man with shaky hands anyway? Not me sir.


Here’s an egg recipe that I invented. I like to use the word “invented” because it feels like I have done something so relevant in the history of mankind. I didn’t have a name for it yet but the basic recipes are: oil, garlic, onion, salt, potato and egg. 


Here’s a Mechado that I cooked. This and Ginisang Munggo are the two recipes that I always like to cook every now and then. The reason being that is so I can whipped out a dish of this or two at any given time without having to ask Google for the recipe.

These days, I’m eating a bit hefty to recover the weights that I lost during the Chicken Pox bout. Remember that when you get infected by this virus, there is nothing that you can do much. You are in the mercy of your own immune system. You can increase its efficacy by eating healthy foods and drinking lots of fluids, but the flu and fever that come along with the infection will keep you, most of the time in bed, and make you feel weaker that you’ll hardly feel hungry at all.

But luckily, time is your best friend. Your body will heal in time. The total period of recovery is just around a week although some may take it up to two weeks.

That’s all for me this weekend. Bye!







Wednesday, 9 May 2018

Attendance Program and CinchPro Payroll System

In 2013, the management in the company that I am working with bought a couple of attendance biometric machines from overseas. It didn't have an attendance software to go with it and it would be a waste if we couldn't use it.So what I did was that I asked the company to give me a whole fortnight (14 days) to program an attendance software that can automate our existing manual time sheet calculations.

This is the software that I came up with. It gets the data from what the biometric machine yields and could do rapid calculations of the total time incurred as well as figure out late penalties. The note on the leftmost side at the bottom says it's already in its 4th revision.Since 2013, the reason why it's very easy and fast to generate time sheet reports has largely been due to this. We didn't have to calculate time from the time cards manually.


This is just one of those biometric machines, and it remarkably held in time. For five years, the company that I'm working with is still using these machines together with the attendance software that I have created for them.


This is the Payroll System that I developed from scratch. In the early years leading up to its creation, I had an intermittent opportunity to help our accounting office with payroll works for quite some time. Those good times had helped me earned a considerable amount of knowledge in payroll stuffs, which then led me to the creation of this latest software, the CinchPro Payroll System in 2017.


The CinchPro Payroll System works in tandem with my Attendance Program. With so many things going on in the payroll, one could easily make a mistake if it's done in Excel. Also, the repetitive tasks can be tedious. By using CinchPro, one can easily generate reports on the ply.

The modules in the CinchPro Payroll Systems include:

  • Staff Recording
  • Unique Position Monitoring
  • Money Booking
  • Bread or Item Booking
  • Uniform Deductions
  • Loans
  • Other Deductions
  • NASFUND PNG
  • Taxes
  • Entitlements such as Leave Pay, Finished Pay and Long Service
  • Monitoring absences through Medical Certificates 
  • Generation of Pay Slips and other reports
  • Payroll for Factory workers that gets paid by pieces of work.
  • Generating Excel file counterparts for sending payroll to BSP or ANZ bank for processing.


Friday, 4 May 2018

A Short Work in Daru Island

Daru Island reminds me of the old Palayan City that I used to live when I was a very much younger version of me. From the familiar unpaved roads and to the homochromous vegetable stalls that lined up the sidewalk, the whole scenery is like a blue pill for the mind. One can think about ingesting that pill as a wonder drug that can instantly bring forth a recollection of experiences in the past, and the most apparent effect is a blissful feeling of having been transported back to the time when almost everyone else is living in simplicity.

Back when the words mobile phones and tablets do not exist in the dictionaries.


But in Daru Island, the unpaved roads and small makeshift houses do not equate to being held back in time. While most people there don’t own a mobile phone, a number of residents and visitors from the mainland that come from all walks of life do carry a communicating device with them. 

While I’m happily expecting a kind of communicating device of local ingenuity, the advancement in technology in Daru is catching up to the latest trend. Gone is the era when empty tin cans hooked up to a short distance by a piece of string is used as a phone. The influx of overseas items there has brought people to get closer to using touchscreen phones or tablets.


This is the room that was assigned to me for the duration of my stay. It’s a bit spacious and has its own bath and toilet.  I have a window that is facing towards the beachfront. In the night, I always have enough time to admire the beauty of the seas, but during such time, everything outside is engulfed in total darkness.


Here’s the old shop that our company is replacing with a much bigger shop within the compound. At that time, it’s still operating.  Part of my job there is to install the network that new POS machines will use.


This is kuya Levi and he was showing me things around the old shop. One can buy almost anything from there.  At one point in time, I even saw one customer buying a set of wheel bearing from our shop. I didn’t know we’re selling bearings.

Now, that was nice. 


The cashiers in the old shop are all using cash registers to record sales. In the new building that we were setting up, all of these cash registers would be replaced by POS machines.


Here’s the new building for the new shop. The guy wearing a red hat is Sirigi and the guy in the black hat is Kelly, and what they were working on at the time was grinding holes underneath the POS counters to make way for the network and power cables. I took the measurements beforehand and drew some rectangle patterns at the bottom of the counters so Sirigi could easily cut them out.


Buried within the floors are networks of cables that go out to these golden ports.  Once the counters are placed over them, they will cover up these ports and it will defeat the whole purpose so my idea was to cut out holes at the bottom.


Cutting out a hole at the bottom wasn’t an easy task because the metal sheets are a hundred times thicker than an average paper. It required us to use a grinder and a pair of sturdy hands. In this case, Sirigi has that pair.


While Sirigi was doing all the relentless cutting, I assigned Kelly to help me with the installation of conduits on the walls through which external cables would go.  

Hey look! I think that was Levy trying to show Kelly where to drill the tucks into. 


The new shop features new type of shelves and has sufficient number of ceiling fans to cool the place down. I was also tasked of installing speakers and CCTV cameras on the ceiling.


My strategy at the time being was to work on what’s important the most. Our POS supplier, Harsya, had only 2 weeks to set his POS up. He’d be needing all the help that he could if he wanted his job done on time. We agreed about letting him work on his POS while I did the cabling. 


I’m a network enthusiast and even though I seldom do network cabling installations, I have network tools that I buy just so I can have one to use. For example, I have bought this LAN tester as a gift to myself when I had an extra money. This is a bit pricey compared to the other types because this model can also test for continuity in coaxial cables.


Kelly is the kind of person that you can depend on at the workplace. If you showed him once how things are done right, he’d catch up easily. 


Installing CCTV cameras in Daru is quite an enjoyable thing to do,  it doesn’t require much effort if you already know what you’re doing. Actually, I only remember drawing something like a floor plan on a piece of paper and using a little math for calculating the length of cables. 

Just kidding. Installing CCTV cameras require a certain degree of effort. First, you need to know what type of CCTV System suits the place well. Next is to estimate the amount of cables to use based on the camera locations if you prefer not to use a wireless system. Another thing to consider is how you’re going to power up the cameras. For Daru branch, I chose to use the 18-port 12-volt power box that could supply all 16 cameras at once. 


Here’s the power box that I’m discussing about. It’s straightforward and easy to install. Each port has female sockets to which there are two clips that the wires can be plugged into.

The only thing that you need to watch out for is the strictness in polarity.


I took care of soldering the BNC connectors to the cables. How do I know these things? In 2008, I took up short courses in practical electronics and automotive electronics at TESDA in the Philippines in two different occasions. 


Here’s what our cameras looked like after the installation. Pretty neat huh?


For outdoor cameras, we used pvc pipes and chemical pipes as conduits to hold our cables in place. 


The black box on the top left is a 24-channel public address system. I’m testing its sound quality with two speakers. For some reason, there are some people who prefer to place the speakers under a series connection. But I digress, because speakers are better off in parallel connection.


I showed Kelly how to affix the speakers to the ceilings and as expected, he picked up quickly. Back in the old days, we used to make perfect circles in elementary school using a cheap compass. It's pretty surprising that even after more than two decades, the way we make perfect circles didn't change that much.


My conclusion is that it is much easier and faster to install a public address sound system than the CCTV systems.


Here’s Alejandro, a Filipino manager in the shop, trying out the quality of the sound system after the installation. He seems happy enough after the initial testing.


And here’s Harysa (on the left) and Levi (on the right) giving thumbs up after the successful installation of Airpos POS machines on the counters. 

That’s all for this week. Until next time.


Related Posts Plugin for WordPress, Blogger...