Hindustan Zinc Limited

403
Hindustan Zinc Ltd., Debari A Report On Industrial Training & Project on Inventory Management System

Transcript of Hindustan Zinc Limited

Page 1: Hindustan Zinc Limited

Hindustan Zinc Ltd., Debari

A Report

On

Industrial Training & Project on

Inventory Management System

www.studygalaxy.com

PREFACE

Page 2: Hindustan Zinc Limited

Depending on the sub-speciality(ies) involved, industrial engineering may

also be known as operations management, management science, systems

engineering, or manufacturing engineering, usually depending on the

viewpoint or motives of the user.

While the term originally applied to manufacturing, nowadays the term

"industrial" in industrial engineering can be somewhat misleading (leading to

the typical extensions noted above). It has grown to encompass any

methodical or quantitative approach to optimizing how a process, system, or

organization operates. The various topics of concern to industrial engineers

include management science, financial engineering, engineering

management, supply chain management, process engineering, operations

research, systems engineering, ergonomics, cost and value

engineering, quality engineering, facilities planning, and the engineering

design process. Traditionally, a major aspect of industrial engineering was

planning the layouts of factories and designing assembly lines and other

manufacturing paradigms.

While pursuing our industrial training here at HINDUSTAN ZINC LTD., DEBARI

in IT department we developed this report covering a general overview of all

the aspects of the industry and tried to lay emphasis on the computer

oriented applications which also includes the project on Inventory

Management System which we developed as a learning procedure for in-

house software development.

The management of inventory is a significant task in sequence of operations

in all the industries and being a tedious and sensitive task, performing it with

the help of a well designed and organized computer application can be a

great boon. The same made us choose this as the subject of our project

development.

Page 3: Hindustan Zinc Limited

ACKNOWLEDGEMENT

Firstly, I express deep gratitude towards Mr. T.A. KOTANGLE (HOD:

Department of IT, ZSD) for helping us accomplish this task by sparing his

valuable time and providing us his priceless guidance.

We would also like to thank all the executives of Hindustan Zinc Ltd. for

providing us with all the relevant data as per the project and innovative

ideas to update it with the latest technology and functions.

Last but not the least we would like to thank the college administration for

allowing us to pursue our industrial training in this esteemed organization.

Page 4: Hindustan Zinc Limited

© All Rights Reserved

No part of this report may be reproduced, stored in a retrieval system or transmitted in any form or by any means (except for review or criticism) without prior permission of the author(s). If any individual/publication/institute/ is found indulging in any such activity, legal action will be taken against accordingly.

Page 5: Hindustan Zinc Limited

CONTENTS

S.no. TopicPage

1. The Company Profile1

Section A – Overview of Zinc Smelting & Allied Subjects of the Industry

2. Introduction 4

3. Roasting 8

4. Leaching 10

5. Electrolysis 12

6. Safety Engineering 13

7. Human Resource15

8. Finance17

9. Logistics18

10. Industrial Engineering19

Section B – Applications of Computer Science In The Industry

Page 6: Hindustan Zinc Limited

11. SAP 21

12. VSAT 23

13. Simulation & Control25

Section C – A Project On Inventory Management System

14. General Perspective31

15. Technical Perspective32

16. Design Concept34

17. Forms 35

18. Modules 269

19. Reports288

20. User Interface310

THE COMPANY PROFILE

Hindustan Zinc Limited was incorporated from the erstwhile Metal

Corporation of India on 10 January 1966 as a Public Sector Undertaking.

In April 2002, Sterlite Opportunities and Ventures Limited (SOVL) made an

open offer for acquisition of shares of the company; consequent to the

disinvestment of Government of India's (GOI) stake of 26% including

management control to SOVL and acquired additional 20% of shares from

public, pursuant to the SEBI Regulations 1997. In August 2003, SOVL

acquired additional shares to the extent of 18.92% of the paid up capital

1

Page 7: Hindustan Zinc Limited

from GOI in exercise of "call option" clause in the share holder's agreement

between GOI and SOVL.

With the above additional acquisition, SOVL's stake in the company has gone

up to 64.92%. Thus GOI's stake in the company now stands at 29.54%.

The Group's principal activities are mining and smelting of zinc and lead

operations. It's products include zinc ingots, lead ingots, silver, sulphuric

acid, cadmium ingots, copper cathode and others. The Group operates with

two segments namely Zinc and Other. It operates through three mining and

three smelter Complexes. Mining complexes are located in Rampura Agucha,

Rajpura Dariba and Zawar - all in Rajasthan. Smelter complexes are located

at Chanderiya and Debari in Rajasthan and Vizag in Andhra Pradesh.

Hindustan Zinc Limited Key Data:

 Ticker: 500188 Country: INDIA

 Exchanges: OTH BOM Major Industry:Metal Producers & Products Manufacturers

   Sub Industry: Miscellaneous Metal Producers

 2010 Sales 80,169,700,000 Employees: 6,661

Page 8: Hindustan Zinc Limited

(Year Ending Jan 2011).

 Currency: Indian Rupees Market Cap: 408,017,929,235

 Fiscal Yr Ends:

MarchShares Outstanding:

422,531,900

 Share Type: OrdinaryClosely Held Shares:

274,315,431

Page 9: Hindustan Zinc Limited

SECTION AOVERVIEW OF ZINC SMELTING &

ALLIED SUBJECTS OF THE INDUSTRY

Page 10: Hindustan Zinc Limited

INTRODUCTION

Zinc and zinc-containing products contribute around US$ 40 billion to the

global economy each year. US$ 18.5 billion is related to mining, smelting,

and refining of zinc. The rest is related to its many applications. Galvanizing,

the protection of steel against corrosion by metallurgical bonding of zinc to

steel, is the most important application of zinc. Other applications include die

casting of precision components, alloys such as brass, as a component in

pharmaceuticals and cosmetics, in batteries and as a micronutrient for

humans, animals, and plants.

Zinc smelting is the process of converting zinc concentrates (ores that

contain zinc) into pure zinc. The most common zinc concentrate processed

is zinc sulfide, which is obtained by concentrating S phalerite using the froth

flotation method. Secondary (recycled) zinc material, such as zinc oxide, is

also processed with the zinc sulfide. Approximately 30% of all zinc produced

is from recycled sources.

The principal processes by which zinc is extracted from its ores can be

categorized under pyro-metallurgical processes and hydro-metallurgical

processes.

A. Pyrometallurgical Processes:

Horizontal Retort Process

Vertical Retort Process

Electro Thermal Process

Imperial Smelting Process

B. Hydrometallurgical Processes:

2

Page 11: Hindustan Zinc Limited

Roast Leach Electrowin Process

Pressure Leaching Process

About 80% of world’s total zinc output is produced through conventional

hydrometallurgical route i.e. Roast-leach-electrowin (RLE) route. The pre-

requisite condition for zinc metal extraction from sulphide concentrate

through a hydro-metallurgical route is the elimination of its sulphur content

in order to make it amenable to further treatment by leaching, i.e., the zinc

mineral into dissolved state in solution. Since zinc sulphide mineral is not

easily leached, it is first converted into zinc oxide, which is easily leached.

This is predominantly accomplished by roasting of zinc concentrate in fluid

bed roasters and fixation of SO2 bearing off gases thus generated as

sulphuric acid by contact process. In the recent past, an alternative

technology to conventional roasting followed by leaching, has been

developed by Sherritt-Gordon of Canada, commonly known as “Pressure

Leach Process” which eliminates the need of roasting step prior to leaching.

The process fixes the sulphide content of concentrate as elemental sulphur,

thus eliminates the need for a separate sulphuric acid production facility,

whereas the zinc metal content of the concentrate is converted into a zinc

sulphate solution, thus combining both roast-leach steps of conventional

process into a single unit operation. Thus there are two-process route for

extraction of zinc hydrometallurgically.

ROAST LEACH ELECTROWIN (RLE) PROCESS:

The main purpose of roasting of zinc sulphide concentrate is to convert it

into a product, which is amenable to further treatment through

hydrometallurgical process for extraction of zinc. Secondly, to fix the

Page 12: Hindustan Zinc Limited

sulphide contents into sulphur dioxide gases for subsequent economical

recovery as sulphuric acid.The principal reaction during fluid bed roasting is: 

2 ZnS   +  3O2   =     2ZnO    +   2SO2

These rich gases are cleaned and cooled to recover dust content as zinc

calcine and to remove the various harmful impurities such as Hg, Se, F, Cl,

As, etc., before being led to double contact and double conversion process

(DCDA) plant for manufacture of sulphuric acid.

The dead roasted product, zinc calcine, is subjected to leaching with recycled

electrolyte to extract zinc content. The enriched zinc sulphate solution is

further subjected to purification with zinc dust to eliminate impurities like

copper, cadmium, cobalt, nickel etc. before being subjected to electrolysis.

The zinc sulphate solution is fortified with return electrolyte solution,

undergoes electrolysis in lined concrete cells for deposition of zinc on

aluminium cathodes. The lead- silver plates are used as anodes. The

deposited zinc on the cathodes are periodically stripped by automatic

stripping machines, melted in induction furnace and cast into saleable zinc

ingots man automatic casting and stacking machine. In order to maximise

zinc extractions the leach residues mainly zinc- ferrites, a bye product of

leaching process, are subjected to treatment to hydrolyse its iron content

into disposable Jarosite / goethite / hematite. The zinc plants are also

integrated with bye-product cadmium recovery unit in order to maximise

sales realization.

The standard zinc product is Special High Grade zinc (normally obtained from

RLE process route), with an assay of 99.995% zinc, i.e. it can contain a

maximum of 50 parts per million of impurities. There is also a grade of 98.5%

zinc, the main impurity being lead, and this used to be the standard grade,

called GOB (Good Ordinary Brand) or PW (Prime Western), normally a

Page 13: Hindustan Zinc Limited

product from the Imperial smelting process (ISP). A SHG product from the ISP

can also be produced by distillation process of refining.

PRESSURE LEACH PROCESS:

The pressure leach technique was first successfully commercially applied for

zinc extraction with the commissioning of first plant in 1981 at Cominco,

Trail, Canada.

In this process zinc sulphide or bulk zinc concentrates are oxidized under

oxygen overpressures of 1200 kpa abs. at a temperature of 1500C in

sulphuric acid medium to produce zinc sulphate solution directly and the

sulphide content is precipitated as elemental sulphur according to the

following overall reaction:

ZnS    +    H2S04    +    0.5 02    =    ZnSO4    +    H20    +   Sº

The various factors influencing the kinetics of above reaction are the particle

size, mineralogy, surface active additives, acidities, reaction time,

temperature and oxygen over-pressures where by maximising metal

extraction and fixation of lead and iron constituents into disposable Jarosite

and other types of residues. The zinc sulphate solution thus produced is

amenable to further processing for final zinc extraction through conventional

leach-electrowin units. 

Page 14: Hindustan Zinc Limited

Fig: General flow diagram of the zinc smelting process

Page 15: Hindustan Zinc Limited

ROASTING

Roasting is a metallurgical process involving gas-solids reactions at elevated

temperatures. A common example is the process in which sulfide ores are

converted to oxides, prior to smelting. Roasting differs from calcination,

which merely involves decomposition at elevated temperatures. A typical

sulfide roasting chemical reaction takes the following form:

MSn + 1.5nO2 → MOn + nSO2.

For example:

CuS + 1.5O2 → CuO + SO2

and

2ZnS + 3O2 → 2ZnO + 2SO2

Roasting is a process of oxidizing zinc sulfide concentrates at high

temperatures into an impure zinc oxide, called "Zinc Calcine". The chemical

reactions taking place during the process are:

Approximately 90% of zinc in concentrates are oxidized to zinc oxide, but at

the roasting temperatures around 10% of the zinc reacts with the iron

impurities of the zinc sulfide concentrates to form zinc ferrite. A byproduct of

roasting is sulfur dioxide, which is further processed into sulfuric acid,

a commodity. The linked refinery flow sheet shows a schematic of Noranda's

eastern Canadian zinc roasting operation. The process of roasting varies

based on the type of roaster used. There are three types of roasters:

multiple-hearth, suspension, and fluidized-bed.

3

Page 16: Hindustan Zinc Limited

Multiple-hearth roaster

In a multiple-hearth roaster, the concentrate drops through a series of 9 or

more hearths stacked inside a brick-lined cylindrical column. As the feed

concentrate drops through the furnace, it is first dried by the hot gases

passing through the hearths and then oxidized to produce calcine. The

reactions are slow and can be sustained only by the addition of fuel. Multiple

hearth roasters are unpressurized and operate at about 690 °C (1,270 °F).

Operating time depends upon the composition of concentrate and the

amount of the sulfur removal required. Multiple hearth roasters have the

capability of producing a high-purity calcine.

Suspension roaster

In a suspension roaster, the concentrates are blown into a combustion

chamber very similar to that of a pulverized coal furnace. The roaster

consists of a refractory-lined cylindrical steel shell, with a large combustion

space at the top and 2 to 4 hearths in the lower portion, similar to those of a

multiple hearth furnace. Additional grinding, beyond that required for a

multiple hearth furnace, is normally required to ensure that heat transfer to

the material is sufficiently rapid for the desulfurization and oxidation

reactions to occur in the furnace chamber. Suspension roasters are

unpressurized and operate at about 980 °C (1,800 °F).

Fluidized-bed roaster

In a fluidized-bed roaster, finely ground sulfide concentrates are suspended

and oxidized in a feedstock bed supported on an air column. As in the

suspension roaster, the reaction rates for desulfurization are more rapid than

in the older multiple-hearth processes. Fluidized-bed roasters operate under

a pressure slightly lower than atmospheric and at temperatures averaging

1,000 °C (1,830 °F). In the fluidized-bed process, no additional fuel is

required after ignition has been achieved. The major advantages of this

Page 17: Hindustan Zinc Limited

roaster are greater throughput capacities, greater sulfur removal

capabilities, and lower maintenance.

LEACHING

Leaching is a widely used extractive metallurgy technique which converts

metals into soluble salts in aqueous media. Compared

to pyrometallurgical operations, leaching is easier to perform and much less

harmful, because no gaseous pollution occurs. The only drawback of leaching

is its lower efficiency caused by the low temperatures of the operation, which

dramatically affect chemical reaction rates.

There are a variety of leaching processes, usually classified by the types

of reagents used in the operation. The reagents required depend on

the ores or pretreated material to be processed. A typical feed for leaching is

either oxide or sulfide.

4

Page 18: Hindustan Zinc Limited

For material in oxide form, a simple acid leaching reaction can be illustrated

by the zinc oxide leaching reaction:

ZnO + H2SO4 → ZnSO4 + H2O

In this reaction solid ZnO dissolves, forming soluble zinc sulfate.

In many cases other reagents are used to leach oxides. For example, in the

metallurgy of aluminium, aluminium oxide is subject to leaching

by alkali solutions:

Al2O3 + 3H2O + 2NaOH → 2NaAl(OH)4

Leaching of sulfides is a more complex process due to the refractory nature

of sulfide ores. It often involves the use of pressurized vessels,

called autoclaves. A good example of the autoclave leach process can be

found in the metallurgy of zinc. It is best described by the following chemical

reaction:

2ZnS + O2 + 2H2SO4 → 2ZnSO4 + 2H2O + 2S

This reaction proceeds at temperatures above the boiling point of water, thus

creating a vapor pressure inside the vessel. Oxygen is injected under

pressure, making the total pressure in the autoclave more than 0.6 MPa.

Page 19: Hindustan Zinc Limited

Fig: Flow-diagram of the first stage leach process

Fig: Flow-diagram of the second, third and fourth stage leach process

Page 20: Hindustan Zinc Limited

ELECTROLYSIS

Zinc is extracted from the purified zinc sulfate solution by electrowinning,

which is a specialized form of electrolysis. The process works by passing an

electric current through the solution in a series of cells. This causes the zinc

to deposits on the cathodes (aluminum sheets) and oxygen to form at the

anodes. Sulfuric acid is also formed in the process and reused in the leaching

process. Every 24 to 48 hours, each cell is shut down, the zinc-coated

cathodes are removed and rinsed, and the zinc is mechanically stripped from

the aluminum plates.

Electrolytic zinc smelters contain as many as several hundred cells. A portion

of the electrical energy is converted into heat, which increases the

temperature of the electrolyte. Electrolytic cells operate at temperature

ranges from 30 to 35 °C (86 to 95 °F) and at atmospheric pressure. A portion

of the electrolyte is continuously circulated through the cooling towers both

to cool and concentrate the electrolyte through evaporation of water. The

cooled and concentrated electrolyte is then recycled to the cells. This

process accounts for approximately one-third of all the energy usage when

smelting zinc.

There are two common processes for electrowinning the metal: the low

current density process, and the Tainton high current density process. The

former uses a 10% sulfuric acid solution as the electolyte, with current

density of 270–325 amperes per square meter. The latter uses 22–28%

sulfuric acid solution as the electrolyte with a current density of about 1,000

amperes per square meter. The latter gives better purity and has higher

production capacity per volume of electrolyte, but has the disadvantage of

running hotter and being more corrosive to the vessel in which it is done. In

5

Page 21: Hindustan Zinc Limited

either of the electrolytic processes, each metric ton of zinc production

expends about 3,900 kW·h (14 GJ) of electric power.

SAFETY ENGINEERING

Safety engineering is an applied science strongly related to systems

engineering and the subset System Safety Engineering. Safety engineering

assures that a life-critical system behaves as needed even when pieces fail.

Ideally, safety-engineers take an early design of a system, analyze it to find

what faults can occur, and then propose safety requirements in design

specifications up front and changes to existing systems to make the system

safer. In an early design stage, often a fail-safe system can be made

acceptably safe with a few sensors and some software to read them.

Probabilistic fault-tolerant systems can often be made by using more, but

smaller and less-expensive pieces of equipment.

Far too often, rather than actually influencing the design, safety

engineers are assigned to prove that an existing, completed design is safe. If

a safety engineer then discovers significant safety problems late in the

design process, correcting them can be very expensive. This type of error

has the potential to waste large sums of money.

6

Page 22: Hindustan Zinc Limited

The exception to this conventional approach is the way some large

government agencies approach safety engineering from a more proactive

and proven process perspective, known as "system safety". The system

safety philosophy is to be applied to complex and critical systems, such as

commercial airliners, complex weapon systems, spacecraft, rail and

transportation systems, air traffic control system and other complex and

safety-critical industrial systems. The proven system safety methods and

techniques are to prevent, eliminate and control hazards and risks through

designed influences by a collaboration of key engineering disciplines and

product teams. Software safety is a fast growing field since functionality of

modern systems is increasingly being put under control of software. The

whole concept of system safety and software safety, as a subset of systems

engineering, is to influence safety-critical systems designs by conducting

several types of hazard analyses to identify risks and to specify design safety

features and procedures to strategically mitigate risk to acceptable levels

before the system is certified.

Additionally, failure mitigation can go beyond design recommendations,

particularly in the area of maintenance. There is an entire realm of safety

and reliability engineering known asReliability Centered Maintenance (RCM),

which is a discipline that is a direct result of analyzing potential failures

within a system and determining maintenance actions that can mitigate the

risk of failure. This methodology is used extensively on aircraft and involves

understanding the failure modes of the serviceable replaceable assemblies in

addition to the means to detect or predict an impending failure. Every

automobile owner is familiar with this concept when they take in their car to

have the oil changed or brakes checked. Even filling up one's car with fuel is

a simple example of a failure mode (failure due to fuel exhaustion), a means

of detection (fuel gauge), and a maintenance action (filling the car's fuel

tank).

Page 23: Hindustan Zinc Limited

For large scale complex systems, hundreds if not thousands of maintenance

actions can result from the failure analysis. These maintenance actions are

based on conditions (e.g., gauge reading or leaky valve), hard conditions

(e.g., a component is known to fail after 100 hrs of operation with 95%

certainty), or require inspection to determine the maintenance action (e.g.,

metal fatigue). The RCM concept then analyzes each individual maintenance

item for its risk contribution to safety, mission, operational readiness, or cost

to repair if a failure does occur. Then the sum total of all the maintenance

actions are bundled into maintenance intervals so that maintenance is not

occurring around the clock, but rather, at regular intervals. This bundling

process introduces further complexity, as it might stretch some maintenance

cycles, thereby increasing risk, but reduce others, thereby potentially

reducing risk, with the end result being a comprehensive maintenance

schedule, purpose built to reduce operational risk and ensure acceptable

levels of operational readiness and availability.

HUMAN RESOURCE 7

Page 24: Hindustan Zinc Limited

Human resource management is the strategic and coherent approach to

the management of an organization's most valued assets - the people

working there who individually and collectively contribute to the

achievement of the objectives of the business. The terms "human resource

management" and "human resources" (HR) have largely replaced the term

"personnel management" as a description of the processes involved in

managing people in organizations. In simple words, HRM means employing

people, developing their capacities, utilizing, maintaining and compensating

their services in tune with the job and organizational requirement.

Its features include:

Organizational management

Personnel administration

Manpower management

Industrial management

But these traditional expressions are becoming less common for the

theoretical discipline. Sometimes even employee and industrial relations are

confusingly listed as synonyms, although these normally refer to the

relationship between management and workers and the behavior of workers

in companies.

The theoretical discipline is based primarily on the assumption that

employees are individuals with varying goals and needs, and as such should

not be thought of as basic business resources, such as trucks and filing

cabinets. The field takes a positive view of workers, assuming that virtually

all wish to contribute to the enterprise productively, and that the main

obstacles to their endeavors are lack of knowledge, insufficient training, and

failures of process.

Page 25: Hindustan Zinc Limited

Human Resource Management (HRM) is seen by practitioners in the field as a

more innovative view of workplace management than the traditional

approach. Its techniques force the managers of an enterprise to express

their goals with specificity so that they can be understood and undertaken by

the workforce and to provide the resources needed for them to successfully

accomplish their assignments. As such, HRM techniques, when properly

practiced, are expressive of the goals and operating practices of the

enterprise overall. HRM is also seen by many to have a key role in risk

reduction within organizations.

Synonyms such as personnel management are often used in a more

restricted sense to describe activities that are necessary in the recruiting of

a workforce, providing its members with payroll and benefits, and

administrating their work-life needs.

Page 26: Hindustan Zinc Limited

FINANCE

Finance is the science of funds management. The general areas of finance

are business finance, personal finance, and public finance. Finance

includes saving money and often includes lending money. The field of

finance deals with the concepts of time, money, and risk and how they are

interrelated. It also deals with how money is spent and budgeted.

Managerial or corporate finance is the task of providing the funds for a

corporation's activities. For small business, this is referred to as SME

finance (Small and Medium Enterprises). It generally involves balancing risk

and profitability, while attempting to maximize an entity's wealth and the

value of its stock.

Long term funds are provided by ownership equity and long-term credit,

often in the form of bonds. The balance between these elements forms the

company's capital structure. Short-term funding or working capital is mostly

provided by banks extending a line of credit.

Another business decision concerning finance is investment, or fund

management. An investment is an acquisition of an asset in the hope that it

will maintain or increase its value. In investment – in choosing a portfolio –

8

Page 27: Hindustan Zinc Limited

one has to decide what, how much and when to invest. To do this, a

company must:

Identify relevant objectives and constraints: institution or individual goals,

time horizon, risk aversion and tax considerations;

Identify the appropriate strategy: active v. passive – hedging strategy

Measure the portfolio performance

Financial management is duplicate with the financial function of

the Accounting profession. However, financial accounting is more concerned

with the reporting of historical financial information, while the financial

decision is directed toward the future of the firm.

LOGISTICS

Logistics is the management of the flow of goods, information and other

resources between the point of origin and the point of consumption in order

to meet the requirements of consumers. Logistics involves the integration of

information, transportation, inventory, warehousing, material-handling,

and packaging, and occasionally security. Logistics is a channel of the chain

which adds the value of time and place utility. Today the complexity of

production logistics can be modeled, analyzed, visualized and optimized by

plant simulation software.

Logistics as a business concept evolved only in the 1950s. This was mainly

due to the increasing complexity of supplying one's business with materials

and shipping out products in an increasingly globalized supply chain, calling

9

Page 28: Hindustan Zinc Limited

for experts in the field who are called Supply Chain Logisticians. This can be

defined as having the right item in the right quantity at the right time at the

right place for the right price in the right condition to the right customer and

is the science of process and incorporates all industry sectors. The goal of

logistics work is to manage the fruition of project life cycles, supply

chains and resultant efficiencies.

In business, logistics may have either internal focus (inbound logistics), or

external focus (outbound logistics) covering the flow and storage of materials

from point of origin to point of consumption (see supply chain management).

The main functions of a qualified logistician include inventory

management, purchasing, transportation, warehousing, consultation and the

organizing and planning of these activities. Logisticians combine a

professional knowledge of each of these functions so that there is a

coordination of resources in an organization. There are two fundamentally

different forms of logistics. One optimizes a steady flow of material through a

network of transport links and storage nodes. The other coordinates

a sequence of resources to carry out some project.

INDUSTRIAL ENGINEERING

Industrial Engineering (often now supplemented as "Industrial & Systems

Engineering" or "Industrial & Operations Engineering") is a branch of

engineering dealing with optimizing complex processes or systems. It is

10

Page 29: Hindustan Zinc Limited

concerned with the development, improvement, implementation and

evaluation of integrated systems of people, money, knowledge, information,

equipment, energy, materials and/or processes. It also deals with designing

new product prototypes more efficiently and more effectively. Industrial

engineering draws upon the principles and methods of engineering analysis

and synthesis, as well as the mathematical, physical and social sciences

together with the principles and methods of engineering design to specify,

predict, and evaluate the results to be obtained from such systems or

processes. Its underlying concepts overlap considerably with certain

business-oriented disciplines such as Operations Management, but the

engineering side tends to greater emphasize

extensive mathematical proficiency and utilization of quantitative methods.

While the term originally applied to manufacturing, nowadays the term

"industrial" in industrial engineering can be somewhat misleading (leading to

the typical extensions noted above). It has grown to encompass any

methodical or quantitative approach to optimizing how a process, system, or

organization operates. In fact, the primary U.S. professional organization for

Industrial Engineers, the Institute of Industrial Engineers (IIE) has been

considering changing its name to something broader (such as the Institute of

Industrial & Systems Engineers), although the latest vote among

membership deemed this unnecessary for the time being. The various topics

of concern to industrial engineers include management science, financial

engineering, engineering management, supply chain management, process

engineering, operations research, systems engineering, ergonomics, cost

and value engineering, quality engineering, facilities planning, and the

engineering design process. Traditionally, a major aspect of industrial

engineering was planning the layouts of factories and designing assembly

lines and other manufacturing paradigms. And now, in so-called lean

manufacturing systems, industrial engineers work to eliminate wastes of

time, money, materials, energy, and other resources.

Page 30: Hindustan Zinc Limited

SECTION BAPPLICATIONS OF COMPUTER

SCIENCE

IN THE INDUSTRY

Page 31: Hindustan Zinc Limited

SAP

SAP the company was founded in Germany in 1972 by five ex-IBM engineers.

In case you’re ever asked, SAP stands for Systeme, Andwendungen, Produkte

in der Datenverarbeitung which - translated to English - means Systems,

Applications, Products in Data Processing. So now you know! Being

incorporated in Germany, the full name of the parent company is SAP AG. It

is located in Walldorf, Germany which is close to the beautiful town of

Heidelberg. SAP has subsidiaries in over 50 countries around the world from

Argentina to Venezuela (and pretty much everything in between). SAP

America (with responsibility for North America, South America and Australia -

go figure!) is located just outside Philadelphia, PA.

The original five founders have been so successful that they have multiplied

many times over such that SAP AG is now the third largest independent

software maker in the world, with over 80,000 customers (including way

more than half of the world's 500 top companies). SAP employs over 50,000

people worldwide today, and had revenues of $16.9 billion and Net Income of

$2.7 billion in FY08. SAP is listed in Germany (where it is one of the 30 stocks

which make up the DAX) and on the NYSE (ticker:SAP). 

11

Page 32: Hindustan Zinc Limited

There are now more than 121,000 installations of SAP, in 120 countries, with

more than 12 million users! So now, what is SAP? It is a company, but it is

also a product.

So and what made this company so successful? Back in 1979 SAP released

SAP R/2 (which runs on mainframes) into the German market. SAP R/2 was

the first integrated, enterprise wide package and was an immediate success.

For years SAP stayed within the German borders until it had penetrated

practically every large German company. Looking for more growth, SAP

expanded into the remainder of Europe during the 80's. Towards the end of

the 80's, client-server architecture became popular and SAP responded with

the release of SAP R/3 (in 1992). This turned out to be a killer app for SAP,

especially in the North American region into which SAP expanded in 1988.

The success of SAP R/3 in North America has been nothing short of stunning.

Within a 5 year period, the North American market went from virtually zero

to 44% of total SAP worldwide sales. SAP America alone employs more than

5,000 people and has added the names of many of the Fortune 500 to its

customer list (8 of the top 10 semiconductor companies, 7 of the top 10

pharmaceutical companies etc). SAP today is available in 46 country-specific

versions, incorporating 28 languages including Kanji and other double-byte

character languages. SAP also comes in 21 industry-specific versions.

SAP R/3 is delivered to a customer with selected standard process turned on,

and many many other optional processes and features turned off. At the

heart of SAP R/3 are about 10,000 tables which control the way the

processes are executed. Configuration is the process of adjusting the

settings of these tables to get SAP to run the way you want it to. Think of a

radio with 10,000 dials to tune and you’ll get the picture. SAP functionality

included is truly enterprise wide including: Financial Accounting (e.g. general

ledger, accounts receivable etc), Management Accounting (e.g. cost centers,

profitability analysis etc), Sales, Distribution, Manufacturing, Production

Page 33: Hindustan Zinc Limited

Planning, Purchasing, Human Resources, Payroll etc. All of these modules are

tightly integrated which – as you will find out – is a huge blessing ... but

brings with it special challenges.

VSAT

A Very Small Aperture Terminal (VSAT), is a two-way satellite ground

station or a stabilized maritime Vsat antenna with a dish antenna that is

smaller than 3 meters. The majority of VSAT antennas range from 75 cm to

1.2 m. Data rates typically range from 56 Kbit/s up to 4 Mbit/s. VSATs access

satellites in geosynchronous orbit to relay data from small remote earth

stations (terminals) to other terminals (in mesh configurations) or master

earth station "hubs" (in star configurations).

12

Page 34: Hindustan Zinc Limited

VSATs are most commonly used to transmit narrowband data (point of

sale transactions such as credit card, polling or RFID data; or SCADA),

or broadband data (for the provision of Satellite Internet access to remote

locations, VoIP or video). VSATs are also used for transportable, on-the-move

(utilizing phased array antennas) or mobile maritime communications.

Most VSAT networks are configured in one of these   topologies :

A star topology, using a central uplink site, such as a network operations

center (NOC), to transport data back and forth to each VSAT terminal via

satellite,

A mesh topology, where each VSAT terminal relays data via satellite to

another terminal by acting as a hub, minimizing the need for a centralized

uplink site,

A combination of both star and mesh topologies. Some VSAT networks are

configured by having several centralized uplink sites (and VSAT terminals

stemming from it) connected in a multi-star topology with each star (and

each terminal in each star) connected to each other in a mesh topology.

Others configured in only a single star topology sometimes will have each

terminal connected to each other as well, resulting in each terminal acting

as a central hub. These configurations are utilized to minimize the overall

cost of the network, and to alleviate the amount of data that has to be

relayed through a central uplink site (or sites) of a star or multi-star

network.

Constituent Components of a VSAT

Antenna

Block upconverter  (BUC)

Low-noise block converter  (LNB)

Orthomode transducer  (OMT)

Interfacility Link Cable  (IFL)

Page 35: Hindustan Zinc Limited

Indoor unit  (IDU)

All the outdoor parts on the dish are collectively called the ODU (Outdoor

Unit), i.e. OMT to split signal between BUC and LNB. The IDU is effectively a

Modem, usually with Ethernet port and 2 x F-connectors for the coax to BUC

(Transmit) and from LNB (Receive). The Astra2Connect has an all-in-one

OMT/BUC/LNA that looks like a QUAD LNB in shape and size which mounts on

a regular TV sat mount. As a consequence it is only 500 mW compared with

the normal 2W, thus is poorer in rain.

Page 36: Hindustan Zinc Limited

SIMULATION & CONTROL

Honeywell’s Advanced Control & Optimization

Improve profitability by increasing production and decreasing costs with

Honeywell’s modeling and multivariable advanced control and optimization

products.

Ongoing advanced control and optimization of plant operations ensures

responsiveness to inevitable changes in business demands through close

linkages with planning, scheduling, and management functions. Delivered

through the unified Experion™ Process Knowledge System (PKS)

architecture, Honeywell solutions improve profitability by increasing

throughput, reducing costs, increasing yields, and improving product quality.

Advanced Control and Optimization products address all aspects of advanced

process control and optimization—from improving regulatory loop control—to

globally optimizing the entire process based on a unique layered approach.

This model allows new technologies to be easily added at any time to a

common platform that meets optimization objectives without compromising

future opportunities to improve business performance.

13

Page 37: Hindustan Zinc Limited

Honeywell’s Simulation Solution

UniSim® software and services improve plant performance and overall

business results for the process industry through:

Better plant design

Better plant operations

Better plant optimization.

UniSim solution software is built from the best simulation technologies

available.  UniSim offers a series of unified simulation solutions to support

improved performance throughout the lifecycle of a plant—from off-line use

in steady-state design simulation, control check-out, and operator training, to

online use in control and optimization, performance monitoring, and business

planning.

With the launch of UniSim, Honeywell’s vision of providing best-in-class

simulation solutions is realized, generating benefits across the lifecycle of a

plant. UniSim substantially improves capabilities for simulation of on-line and

off-line process unit design and optimization applications. Customers can

Page 38: Hindustan Zinc Limited

more easily capture and share process knowledge, improve plant

profitability, and maximize the return on their simulation investments.

The UniSim family of software and services includes:

The UniSim Design suite—offers a powerful steady-state tool that

helps engineers create optimal process designs based on critical business

objectives. A dynamic simulation option is also available to gain valuable

insights into process behavior at every phase of a plant's lifecycle.

The UniSim Operations suite—provides an advanced operator training

solution plus capabilities for control system checkout. Well-trained

personnel react more quickly and diffuse process situations before

incidents occur. This is also a tool for learning a new system before

commissioning, or for quickly training new hires.

The UniSim Optimization suite—offers optimization of plant

operations to ensure responsiveness to changes in business demands

through close linkages with planning, scheduling, and management

functions.

Dynamic Engineering Studies services—evaluate the impact of

future process design changes prior to plant modifications. Honeywell

experts help customers evaluate the impact of future process design

changes before committing time and money to intensive plant

modifications.

Page 39: Hindustan Zinc Limited

Honeywell’s Terminal Automation Products

1. Tank Gauging

Tank gauging is essential for the assessment of tank contents, tank

inventory control and tank farm management. In addition to accurate

measurement, reliability to prevent product loss, performance to optimize

product movement and safety to protect the environment and personnel are

critical to successful inventory management.

Honeywell Enraf provides a comprehensive range of products and systems

for accurate tank gauging, inventory management and tank terminal

operations. For optimal benefit Engauge is a service tool that provides the

required functionality for site device management, gauge configuration and

analyses.

Open connectivity, modular design and solid migration paths maximize the

use of tank storage capacity to optimize operations and increase revenues.

2. Temperature Measurement Systems

Honeywell Enraf offers a comprehensive line of products for accurate

temperature measurement, ranging from single spot temperature probes to

the advanced VITO multiple thermosensor thermometers (MTT) for

temperature and volume measurement. Honeywell Enraf’s VITO interface

guarantees faultless communication with level gauging systems based on

radar or servo technology. The gauging systems can easily be provided with

Page 40: Hindustan Zinc Limited

additional functionality for water bottom measurement, keeping the number

of instruments and components in and on the tank to a minimum.

Honeywell Enraf’s temperature gauging systems offer reliability, high measurement accuracy, minimal maintenance cost and easy installation.

Honeywell Enraf offers several types of temperature measurement instruments:

A. Spot Temperature Measurement-

Honeywell Enraf supports and supplies spot temperature probes of third-party origin for direct connection to a level gauge. The probes can be attached at any desired location in the tank. Communication with servo or radar measurement systems can take place either directly or via the VITO interface.

B. Average Temperature Measurement-

For average temperature measurement Honeywell Enraf offers the VITO MRT which consists of multiple resistor elements each with a different length. Depending on the liquid level measured by the level gauge, the longest element which is completely submerged is selected to represent the average temperature of the stored product.

C. Multiple Temperature Measurement-

The VITO LT measures average product temperature and average gas temperature with a nine-element probe. The VITO LT exceeds the requirements of all standards for in-tank measurements. It can be used with products stored at between -55 degrees Celsius and +135 degrees Celsius in tanks up to 20 meters high. The temperature gauging system is suitable for customs transfer purposes in conformity with weights and measures regulations.

Honeywell Enraf’s top model is the VITO MTT for various temperature ranges for diverse applications and is available in any desired length. The temperature measurement is performed by a 16-element probe. The VITO MTT is able not only to measure average product and gas temperature but also to determine temperature profiles. The VITO MTT fully complies with all major standards for tank applications and is suitable for customs transfer purposes in conformity with weights and measures regulations. In addition, the VITO MTT is fit for LNG storage.

Page 41: Hindustan Zinc Limited

Fig: Tank Gauging Devices

Fig: Temperature Measurement Systems

Page 42: Hindustan Zinc Limited

SECTION CA PROJECT ON

INVENTORY MANAGEMENT SYSTEM

Page 43: Hindustan Zinc Limited

GENERAL PERSPECTIVE

A database management system (DBMS) consists of software that organizes

the storage of data. A DBMS controls the creation, maintenance, and use of

the database storage structures of social organizations and of their users. It

allows organizations to place control of organization wide database

development in the hands of Database Administrators (DBAs) and other

specialists. In large systems, a DBMS allows users and other software to

store and retrieve data in a structured way.

Databases function in many applications, spanning virtually the entire range

of computer software. Databases have become the preferred method of

storage for large multiuser applications, where coordination between many

users is needed. Even individual users find them convenient, and many

electronic mail programs and personal organizers are based on standard

database technology. Software database drivers are available for most

database platforms so that application software can use a common API to

retrieve the information stored in a database. Commonly used database APIs

include JDBC and ODBC.

We look forward to the development of an integrated database management

application that could serve all the systematic data storage and data

manipulation requirements for any specific department of the corporation.

Logistics, Human Resources, Finance, Materials, etc are some such possible

fields that can be targeted at for the development of the software. The prime

objectives of the system we plan to develop are as under:

14

Page 44: Hindustan Zinc Limited

Integrated data operations implemented through an innovative and

efficient configuration.

Stronger security features ensuring high safety of the data.

Easy user interface maximizing the convenience in authenticated

access.

Robust design making the system more reliable and sustainable.

TECHNICAL PERSPECTIVE

Justification of Integration

The standard of business computing as of 2009, relational databases are the

most commonly used database today. It uses the table to structure

information so that it can be readily and easily searched through. Thus, we

plan the same, i.e. to develop the database according to the relational

model. When we assert the development of an integrated database

management application, obviously we need to justify it. So, we state under

the tasks that are provided in the database package:

Database Development: used to define and organize the content,

relationships, and structure of the data needed to build a database.

Database Interrogation: can access the data in a database for

information retrieval and report generation. End users can selectively

retrieve and display information and produce printed reports and

documents.

15

Page 45: Hindustan Zinc Limited

Database Maintenance: used to add, delete, update, correct, and

protect the data in a database.

Application Development: used to develop prototypes of data entry

screens, queries, forms, reports, tables, and labels for a prototyped

application.

Justification of High Security

Database security denotes the system, processes, and procedures that

protect a database from unintended activity. Enforcing security is one of the

major tasks of the DBA. DBMSs usually enforce security through access

control, auditing, and encryption:

Access control ensures and restricts who can connect and what they

can do to the database.

Auditing logs what action or change has been performed, when and by

whom.

Encryption includes built-in encryption mechanisms to encode data

natively into tables and to decipher information "on the fly" when a

query comes in. DBAs can also secure and encrypt connections if

required using DSA, MD5, SSL or legacy encryption standards.

Justification of Easy User Interface and Robustness

Generally, databases are provided with a CLI (Command Line Interface) that

makes it very tedious even for authenticated users to access it as it requires

thorough knowledge of commands. An extremely user friendly GUI (Graphical

User Interface) not only makes it more convenient for the end users but

indirectly it also affects the productivity by reducing time and effort.

The reliable design of the relational database model is least prone to crash

and thus it makes the system less prone to bugs and unrecoverable

Page 46: Hindustan Zinc Limited

deadlocks. Moreover the in-built check mechanisms ensure obliteration of

typical erroneous conditions and other logical bugs.

DESIGN CONCEPT

The proposed design of the integrated database can be explained with the

help of the following graphical layout:

16

Page 47: Hindustan Zinc Limited

The above diagrammatic representation of the development concept shows

the bifurcation of various modules giving an introductory idea of the

development strategy. The systematic modular development of the system

ensures perfection at each level and in each sub-system. Moreover, it also

makes the development procedure more easy and clear.

FORMS 17

Page 48: Hindustan Zinc Limited

The design of the Inventory Management System is divided into 7 major forms:

1. frmLogin.frm

It is the first opening screen of the application which prompts the user to enter the application through a valid login ID.

Coding:

Private Sub cmdCancel_Click()

Unload Me

End Sub

Private Sub cmdNew_Click()

If Not txtUserName.Text = "Admin" Or Not txtPassword.Text = "Admin" Then

MsgBox "Invalid user or password", vbCritical, "Invald user/password"

txtUserName.SetFocus

Exit Sub

End If

If FrmMain.Enabled = False Then

FrmMain.Enabled = True

Else

FrmMain.Show

Unload frmLogin

End If

End Sub

Private Sub Form_Load()

End Sub

2. frmMain.frm

Page 49: Hindustan Zinc Limited

It is the main screen which provides access to all the features of the application namely purchase, sales, accounts, journal voucher and reports etc.

Coding:

Dim VIndex As Integer

Dim SideMenuVisible As Boolean 'On click if frame(Side menu) is visible the invisibole it or if invisible then visible it

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 27 Then

PicBar_Click (10)

End If

If KeyCode = vbKeyA And Shift = 2 Then

PicBar_Click (11) 'Accounts

End If

End Sub

Private Sub Form_Load()

Dim i%

For i% = 0 To PicBar.Count - 1

PicBar(i%).Picture = LoadResPicture("Light", 0)

Next

Page 50: Hindustan Zinc Limited

LblHelpLine.Caption = ""

SetPicCaption

imgPurchase.Picture = img2.ListImages(11).Picture

imgSale.Picture = img1.ListImages(9).Picture

imgAccount.Picture = img1.ListImages(14).Picture

imgVoucher.Picture = img1.ListImages(11).Picture

imgReports.Picture = img1.ListImages(35).Picture

imgBackUp.Picture = img1.ListImages(41).Picture

ImgRestore.Picture = img1.ListImages(25).Picture

imgLogoff.Picture = img1.ListImages(18).Picture

imgCalc.Picture = img1.ListImages(47).Picture

imgNotepad.Picture = img1.ListImages(48).Picture

imgPaint.Picture = img1.ListImages(49).Picture

imgExit.Picture = img1.ListImages(50).Picture

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Call SetColorToDefault

End Sub

Private Sub PicBar_Click(Index As Integer)

'Getting CLICK Action

Page 51: Hindustan Zinc Limited

Select Case Index

Case 0 'Purchases

frmPurchase.Show 1

Case 1 'Sales

frmSale.Show 1

Case 2 'Journal Vouchers / Transaction

frmTransaction.Show 1

Case 3 'Reports

FrmRep.Show 1

Case 4 'BackUp

Case 5 'Restore

Case 6 'Log off

FrmMain.Enabled = False

frmLogin.Show

Case 7 'Calculator

Shell "C:\windows\system32\calc.exe", vbNormalFocus

Case 8 'Notepad

Shell "C:\windows\system32\notepad.exe", vbNormalFocus

Case 9 'MS Paint

Page 52: Hindustan Zinc Limited

Shell "C:\windows\system32\mspaint.exe", vbNormalFocus

Case 10 'Exit

If MsgBox("Do you want to exit?", vbQuestion + vbYesNo, "Exit?") = vbYes Then

Unload Me

End If

Case 11

frmAccounts.Show 1

End Select

End Sub

Private Sub PicBar_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

VIndex = Index

Select Case Index

'---------------------------- MAIN MENU

Case 0

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Purchases

LblHelpLine.Caption = "Add your Purchases"

Case 1

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Sales

Page 53: Hindustan Zinc Limited

LblHelpLine.Caption = "Add your Sales"

Case 2

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Journal Vouchers

LblHelpLine.Caption = "Add your Transactions"

Case 3

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Reports

LblHelpLine.Caption = "View Reports"

Case 4

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Back Up

LblHelpLine.Caption = "Create Database Backup"

Case 5

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Restore

LblHelpLine.Caption = "Restore Database"

Case 6

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Logoff

LblHelpLine.Caption = "Logoff the System"

Case 7

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Calculator

LblHelpLine.Caption = "Calculator"

Case 8

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Notepad

LblHelpLine.Caption = "Note pad"

Case 9

PicBar(Index).Picture = LoadResPicture("Down", 0) 'MS Paint

LblHelpLine.Caption = "MS Paint"

Case 10

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Exit

LblHelpLine.Caption = "Exit to Windows"

Page 54: Hindustan Zinc Limited

Case 11

PicBar(Index).Picture = LoadResPicture("Down", 0) 'Accounts

LblHelpLine.Caption = "Add Transactional Accounts"

End Select

SetPicCaption

End Sub

Public Sub SetColorToDefault()

PicBar(VIndex).Picture = LoadResPicture("Light", 0)

LblHelpLine.Caption = ""

SetPicCaption

End Sub

Private Sub PicMenu_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

On Error Resume Next

LblHelpLine.Caption = ""

SetPicCaption

End Sub

Private Sub PicMnu_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Page 55: Hindustan Zinc Limited

Dim i%

For i% = 0 To PicBar.Count - 1

PicBar(i%).Picture = LoadResPicture("Light", 0)

Next

LblHelpLine.Caption = ""

SetPicCaption

End Sub

Public Sub SetPicCaption()

Call ReplaceCap

End Sub

Public Sub ReplaceCap()

Dim a As Integer

For a = 0 To 11

Select Case a

Case 0

PrintToCenter "Purchases", PicBar(a), False

Case 1

PrintToCenter "Sales", PicBar(a), False

Case 2

PrintToCenter "Journal Voucher", PicBar(a), False

Case 3

Page 56: Hindustan Zinc Limited

PrintToCenter "Reports", PicBar(a), False

Case 4

PrintToCenter "Backup", PicBar(a), False

Case 5

PrintToCenter "Restore", PicBar(a), False

Case 6

PrintToCenter "Log Off", PicBar(a), False

Case 7

PrintToCenter "Calculator", PicBar(a), False

Case 8

PrintToCenter "Notepad", PicBar(a), False

Case 9

PrintToCenter "MS Paint", PicBar(a), False

Case 10

PrintToCenter "Exit to Windows", PicBar(a), False

Case 11

PrintToCenter "Accounts", PicBar(a), False

End Select

Next

End Sub

3. frmAccounts.frm

This form creates the interface for the function of creating accounts of various types.

Coding:

Dim ProdSalePrice As Single

Dim ProdReOrderPoint As Single

Page 57: Hindustan Zinc Limited

Dim SQLQry As String

Dim AvgPrice As Single

Private Sub cmbType_LostFocus()

If cmbType.Text = "Product" Then

cmdProdInfo.Enabled = True

Else

cmdProdInfo.Enabled = False

End If

End Sub

Private Sub cmdCancel_Click()

Clear Me

'Calling form load event

Call Form_Load

'Changing the mode of button

Modes False, True, Me

'Setting focus on TxtName

cmbType.SetFocus

'Highlighting TxtName

High txtName

Page 58: Hindustan Zinc Limited

'Unlock Navigation

UnLockNav Me

End Sub

Private Sub cmdDelete_Click()

MsgBox "In process"

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub cmdFind_Click()

If optTitle.Value = True Then

If Trim(txtFindTitle.Text) = "" Then

MsgBox "Enter Account Title to find", vbCritical, "Message ..."

txtFindTitle.SetFocus

Exit Sub

Else

FindRecord "Title"

End If

ElseIf optId.Value = True Then

If Trim(txtFindId.Text) = "" Or Val(txtFindId) = 0 Then

MsgBox "Enter Account ID to find", vbCritical, "Message ..."

txtFindId.SetFocus

Exit Sub

Else

Page 59: Hindustan Zinc Limited

FindRecord "Id"

End If

End If

End Sub

Private Sub cmdFindCancel_Click()

picFind.Visible = False

cmbType.SetFocus

End Sub

Private Sub cmdFindRecord_Click()

picFind.Visible = True

optTitle.Value = True

txtFindTitle.SetFocus

End Sub

Private Sub cmdOk_Click()

If txtSalePrice.Text = "" Or Val(txtSalePrice) = 0 Then

MsgBox "Enter Sale Price for this Product", vbCritical, "Message"

txtSalePrice.SetFocus

Exit Sub

End If

Page 60: Hindustan Zinc Limited

picAccounts.Enabled = True

picProdInfo.Visible = False

txtName.Text = txtProdName.Text

cmbHead.Text = "Assets"

txtName.SetFocus

End Sub

Private Sub cmdProdCancel_Click()

picAccounts.Enabled = True

picProdInfo.Visible = False

End Sub

Private Sub cmdProdInfo_Click()

picProdInfo.Visible = True

txtProdName.SetFocus

picAccounts.Enabled = False

End Sub

Private Sub cmdSave_Click()

'If Name field is blank

If txtName.Text = "" Then

MsgBox "Enter Account Title", vbCritical, "Message"

txtName.SetFocus

Page 61: Hindustan Zinc Limited

Exit Sub

End If

'If account head not selected then

If cmbHead.ListIndex = -1 Then

MsgBox "Select Account Head", vbCritical, "Message"

cmbHead.SetFocus

Exit Sub

End If

'If account Type not selected then

If cmbType.ListIndex = -1 Then

MsgBox "Select Account Type", vbCritical, "Message"

cmbType.SetFocus

Exit Sub

End If

'If Account Type = Product (as we have other option to enter product detail)

If cmbType.Text = "Product" Then

If txtProdName.Text = "" Or txtSalePrice.Text = "" Or txtReOrder.Text = "" Then

MsgBox "Please enter product informations", vbCritical, "Message"

cmdProdInfo_Click

Exit Sub

End If

End If

'Finding Head Account ID through CMBHead.Text

If cmbHead.Text = "Assets" Then

Page 62: Hindustan Zinc Limited

mHeadId = 1

ElseIf cmbHead.Text = "Liabilities" Then

mHeadId = 2

ElseIf cmbHead.Text = "Capital" Then

mHeadId = 3

ElseIf cmbHead.Text = "Revenue" Then

mHeadId = 4

ElseIf cmbHead.Text = "Expense" Then

mHeadId = 5

End If

'Check if Account Type is Product or anyother

If Not cmbType.Text = "Product" Then

txtSalePrice.Text = "0"

txtReOrder.Text = "0"

End If

'If New record

If cmdNew.Enabled = False Then

Con.Execute "Insert into Accounts(AcId,HeadId,AcTitle,AcType,SalePrice,ReOrderPoint) Values(" & Val(txtId) & ", " & Val(mHeadId) & ", '" & txtName.Text & "', '" & cmbType.Text & "', " & Val(txtSalePrice) & ", " & Val(txtReOrder) & " )"

If cmbType.Text = "Product" Then

Con.Execute "Insert into Product_Openings(ProdId, Qty, Amount) values(" & Val(txtId) & ", " & Val(txtOpStock) & ", " & Val(txtOpAmount) & ")"

End If

Page 63: Hindustan Zinc Limited

MsgBox "New Account Created", vbInformation, "Done"

'Updating Maximum Number

UpdateMaxNumber "AcId", Val(txtId)

'If Existing Record

ElseIf cmdNew.Enabled = True Then

If UpdateRecord.State = 1 Then UpdateRecord.Close

Set UpdateRecord = New ADODB.Recordset

UpdateRecord.Open "Update Accounts set HeadId = " & Val(mHeadId) & ", AcTitle = '" & txtName.Text & "', AcType = '" & cmbType & "' , SalePrice = " & Val(txtSalePrice) & ", ReOrderPoint = " & Val(txtReOrder) & " where AcId = " & Val(txtId) & " ", Con, adOpenDynamic, adLockOptimistic

If cmbType.Text = "Product" Then

Con.Execute "Update Product_Openings set Qty = " & Val(txtOpStock) & ", Amount = " & Val(txtOpAmount) & " Where ProdId = " & Val(txtId) & ""

End If

MsgBox "Existing Record Updated", vbInformation, "Done"

End If

cmdCancel_Click

End Sub

Page 64: Hindustan Zinc Limited

Private Sub Command1_Click()

End Sub

Private Sub fgAccounts_DblClick()

Dim mRow As Integer

mRow = fgAccounts.RowSel

txtId.Text = fgAccounts.TextMatrix(mRow, 0)

txtName.Text = fgAccounts.TextMatrix(mRow, 1)

cmbType.Text = fgAccounts.TextMatrix(mRow, 2)

cmbHead.Text = fgAccounts.TextMatrix(mRow, 3)

cmbType.SetFocus

If cmbType.Text = "Product" Then

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select AcTitle,SalePrice,ReOrderPoint from Accounts where AcId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

txtProdName.Text = RS(0)

txtSalePrice.Text = Val(RS(1))

txtReOrder.Text = Val(RS(2))

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Qty,Amount from Product_Openings where ProdId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

Page 65: Hindustan Zinc Limited

txtOpStock.Text = Val(RS(0))

txtOpAmount.Text = Val(RS(1))

cmdProdInfo.Enabled = True

Else

cmdProdInfo.Enabled = False

End If

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

'Changing Control focus on Enter

ChangeFocusOnEnter KeyAscii, Me

End Sub

Private Sub Form_Load()

'Setting up flexgrid data

Call fgAccountsData

Call GridSetting

'Setting Navigational Recordset

If RsNAV.State = 1 Then RsNAV.Close

Set RsNAV = New ADODB.Recordset

RsNAV.Open "Select AcId, HeadId, AcTitle, AcType, SalePrice, ReOrderPoint from Accounts", Con, adOpenStatic, adLockOptimistic

If RsNAV.RecordCount > 0 Then

Page 66: Hindustan Zinc Limited

Call BoundData 'Showing Data in textboxes

Else

Exit Sub

End If

cmdProdInfo.Enabled = False

End Sub

Public Sub fgAccountsData()

If RS.State = 1 Then RS.Close

Set RS = New ADODB.Recordset

RS.Open "Select * from ViewHeadWise order by AcId", Con, adOpenStatic, adLockOptimistic

Set fgAccounts.DataSource = RS

End Sub

Public Sub GridSetting()

With fgAccounts

.ColWidth(0) = 950

.ColWidth(1) = 2000

.ColWidth(2) = 1350

.ColWidth(3) = 1350

.TextMatrix(0, 0) = "ID"

Page 67: Hindustan Zinc Limited

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

.TextMatrix(0, 3) = "Head Account"

.ColAlignmentFixed(0) = 4

.ColAlignmentFixed(1) = 4

.ColAlignmentFixed(2) = 4

.ColAlignmentFixed(3) = 4

.ColAlignment(0) = 5

.RowHeight(0) = 400

End With

End Sub

Public Sub BoundData()

txtId.Text = Val(RsNAV(0))

If Val(RsNAV(1)) = 1 Then

cmbHead.Text = "Assets"

ElseIf Val(RsNAV(1)) = 2 Then

cmbHead.Text = "Liabilities"

ElseIf Val(RsNAV(1)) = 3 Then

cmbHead.Text = "Capital"

ElseIf Val(RsNAV(1)) = 4 Then

cmbHead.Text = "Revenue"

ElseIf Val(RsNAV(1)) = 5 Then

cmbHead.Text = "Expense"

End If

Page 68: Hindustan Zinc Limited

txtName.Text = RsNAV(2)

cmbType.Text = RsNAV(3)

If cmbType.Text = "Product" Then

txtProdName.Text = RsNAV(2)

txtSalePrice.Text = Val(RsNAV(4))

txtReOrder.Text = Val(RsNAV(5))

End If

End Sub

Private Sub Form_Resize()

Me.Left = Me.Left + 1200

Me.Top = Me.Top + 200

End Sub

Private Sub Label19_Click()

Unload Me

End Sub

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Private Sub lbl_Click(Index As Integer)

Select Case Index

Page 69: Hindustan Zinc Limited

Case 0 'NEW

'Clearing controls of the form

Clear Me

'Calling Max Number

Call AutoId

'Changing the mode of button

Modes True, False, Me

'Setting focus on TxtName

cmbType.SetFocus

'Locking Navigation

LockNav Me

Case 1 'Save

'If Name field is blank

If txtName.Text = "" Then

MsgBox "Enter Account Title", vbCritical, "Message"

txtName.SetFocus

Exit Sub

End If

'If account head not selected then

If cmbHead.ListIndex = -1 Then

MsgBox "Select Account Head", vbCritical, "Message"

Page 70: Hindustan Zinc Limited

cmbHead.SetFocus

Exit Sub

End If

'If account Type not selected then

If cmbType.ListIndex = -1 Then

MsgBox "Select Account Type", vbCritical, "Message"

cmbType.SetFocus

Exit Sub

End If

'If Account Type = Product (as we have other option to enter product detail)

If cmbType.Text = "Product" Then

If txtProdName.Text = "" Or txtSalePrice.Text = "" Or txtReOrder.Text = "" Then

MsgBox "Please enter product informations", vbCritical, "Message"

cmdProdInfo_Click

Exit Sub

End If

End If

'Finding Head Account ID through CMBHead.Text

If cmbHead.Text = "Assets" Then

mHeadId = 1

ElseIf cmbHead.Text = "Liabilities" Then

mHeadId = 2

ElseIf cmbHead.Text = "Capital" Then

mHeadId = 3

ElseIf cmbHead.Text = "Revenue" Then

Page 71: Hindustan Zinc Limited

mHeadId = 4

ElseIf cmbHead.Text = "Expense" Then

mHeadId = 5

End If

'Check if Account Type is Product or anyother

If Not cmbType.Text = "Product" Then

txtSalePrice.Text = "0"

txtReOrder.Text = "0"

End If

'If New record

If lbl(0).Enabled = False Then

Con.Execute "Insert into Accounts(AcId,HeadId,AcTitle,AcType,SalePrice,ReOrderPoint) Values(" & Val(txtId) & ", " & Val(mHeadId) & ", '" & txtName.Text & "', '" & cmbType.Text & "', " & Val(txtSalePrice) & ", " & Val(txtReOrder) & " )"

If cmbType.Text = "Product" Then

Con.Execute "Insert into Product_Openings(ProdId, Qty, Amount) values(" & Val(txtId) & ", " & Val(txtOpStock) & ", " & Val(txtOpAmount) & ")"

'Average Cost Price / Sale Price

AvgPrice = Val(txtOpAmount) / Val(txtOpStock)

Con.Execute "Insert into Avg_Cost(ProdId, PurAvg, SalAvg) Values(" & Val(txtId) & ", " & Val(AvgPrice) & ", " & Val(txtSalePrice) & ")"

End If

Page 72: Hindustan Zinc Limited

MsgBox "New Account Created", vbInformation, "Done"

'Updating Maximum Number

UpdateMaxNumber "AcId", Val(txtId)

'If Existing Record

ElseIf lbl(0).Enabled = True Then

If UpdateRecord.State = 1 Then UpdateRecord.Close

Set UpdateRecord = New ADODB.Recordset

UpdateRecord.Open "Update Accounts set HeadId = " & Val(mHeadId) & ", AcTitle = '" & txtName.Text & "', AcType = '" & cmbType & "' , SalePrice = " & Val(txtSalePrice) & ", ReOrderPoint = " & Val(txtReOrder) & " where AcId = " & Val(txtId) & " ", Con, adOpenDynamic, adLockOptimistic

If cmbType.Text = "Product" Then

Con.Execute "Update Product_Openings set Qty = " & Val(txtOpStock) & ", Amount = " & Val(txtOpAmount) & " Where ProdId = " & Val(txtId) & ""

'Average Cost Price

AvgPrice = Val(txtOpAmount) / Val(txtOpStock)

Con.Execute "Update Avg_Cost SET PurAvg = " & Val(AvgPrice) & " where ProdID = " & Val(txtId) & ""

End If

MsgBox "Existing Record Updated", vbInformation, "Done"

End If

Page 73: Hindustan Zinc Limited

cmdCancel_Click

Case 2 'Cancel

Clear Me

'Calling form load event

Call Form_Load

'Changing the mode of button

Modes False, True, Me

'Setting focus on TxtName

cmbType.SetFocus

'Highlighting TxtName

High txtName

'Unlock Navigation

UnLockNav Me

Case 3

MsgBox "In process"

Case 4

picFind.Visible = True

optTitle.Value = True

txtFindTitle.SetFocus

Case 5

Unload Me

Page 74: Hindustan Zinc Limited

End Select

End Sub

Private Sub lbl_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3, 4, 5

MouseOver lbl(Index)

End Select

End Sub

Private Sub lblnav_Click(Index As Integer)

Select Case Index

Case 0 'Move First

RsNAV.MoveFirst

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Call BoundData

End If

Case 1 'Move previous

RsNAV.MovePrevious

Page 75: Hindustan Zinc Limited

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Call BoundData

End If

Case 2 'Move Next

RsNAV.MoveNext

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call BoundData

End If

Case 3

RsNAV.MoveLast

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call BoundData

End If

Page 76: Hindustan Zinc Limited

End Select

End Sub

Private Sub lblnav_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3

MouseOver lblnav(Index)

End Select

End Sub

Private Sub picAccounts_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Public Sub AutoId()

'Calling MaxNumber function to get Auto Id for the record

MaxNumber "AcId", "Max_Codes"

txtId.Text = Val(MaxNmbr)

End Sub

Private Sub Picture4_Click()

End Sub

Private Sub txtFindId_KeyPress(KeyAscii As Integer)

Page 77: Hindustan Zinc Limited

ONU KeyAscii, txtFindId

End Sub

Private Sub txtId_GotFocus()

txtName.SetFocus

End Sub

Private Sub txtOpAmount_KeyPress(KeyAscii As Integer)

ONU KeyAscii, txtOpAmount

End Sub

Private Sub txtOpAmount_Validate(Cancel As Boolean)

If txtOpAmount.Text = "" Then

txtOpAmount.Text = "0"

End If

End Sub

Private Sub txtOpStock_KeyPress(KeyAscii As Integer)

ONU KeyAscii, txtOpStock

End Sub

Private Sub txtOpStock_Validate(Cancel As Boolean)

If txtOpStock.Text = "" Then

txtOpStock.Text = "0"

End If

End Sub

Private Sub txtReOrder_KeyPress(KeyAscii As Integer)

Page 78: Hindustan Zinc Limited

ONU KeyAscii, txtReOrder

End Sub

Private Sub txtReOrder_Validate(Cancel As Boolean)

If txtReOrder.Text = "" Then

txtReOrder.Text = "0"

End If

End Sub

Private Sub txtSalePrice_KeyPress(KeyAscii As Integer)

ONU KeyAscii, txtSalePrice

End Sub

Private Sub txtSalePrice_Validate(Cancel As Boolean)

If txtSalePrice.Text = "" Or Val(txtSalePrice) = 0 Then

MsgBox "Enter Sale Price for this Product", vbCritical, "Message"

txtSalePrice.SetFocus

End If

End Sub

Public Sub FindRecord(MatchWith As String)

Select Case MatchWith

Case "Title"

SQLQry = "SELECT Accounts.AcId,Accounts.HeadId, Accounts.AcTitle, Accounts.AcType, Accounts.SalePrice, Accounts.ReOrderPoint " & _

"FROM Account_Heads INNER JOIN Accounts ON Account_Heads.Id = Accounts.HeadId where AcTitle = '" & txtFindTitle.Text & "'"

Set RS = New ADODB.Recordset

Page 79: Hindustan Zinc Limited

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

MsgBox "No account found with this Title", vbCritical, "Message.."

txtFindTitle.SetFocus

Exit Sub

Else

ShowFoundData

End If

Case "Id"

SQLQry = "SELECT Accounts.AcId,Accounts.HeadId, Accounts.AcTitle, Accounts.AcType, Accounts.SalePrice, Accounts.ReOrderPoint " & _

"FROM Account_Heads INNER JOIN Accounts ON Account_Heads.Id = Accounts.HeadId where AcId = " & Val(txtFindId) & ""

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

MsgBox "No account found with this ID", vbCritical, "Message.."

txtFindId.SetFocus

Exit Sub

Else

ShowFoundData

End If

End Select

Page 80: Hindustan Zinc Limited

End Sub

Public Sub ShowFoundData()

txtId.Text = Val(RS(0))

If Val(RS(1)) = 1 Then

cmbHead.Text = "Assets"

ElseIf Val(RS(1)) = 2 Then

cmbHead.Text = "Liabilities"

ElseIf Val(RS(1)) = 3 Then

cmbHead.Text = "Capital"

ElseIf Val(RS(1)) = 4 Then

cmbHead.Text = "Revenue"

ElseIf Val(RS(1)) = 5 Then

cmbHead.Text = "Expense"

End If

txtName.Text = RS(2)

cmbType.Text = RS(3)

If cmbType.Text = "Product" Then

txtProdName.Text = RS(2)

txtSalePrice.Text = Val(RS(4))

txtReOrder.Text = Val(RS(5))

End If

If cmbType.Text = "Product" Then

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 81: Hindustan Zinc Limited

RS.Open "Select AcTitle,SalePrice,ReOrderPoint from Accounts where AcId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

txtProdName.Text = RS(0)

txtSalePrice.Text = Val(RS(1))

txtReOrder.Text = Val(RS(2))

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Qty,Amount from Product_Openings where ProdId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

txtOpStock.Text = Val(RS(0))

txtOpAmount.Text = Val(RS(1))

cmdProdInfo.Enabled = True

Else

cmdProdInfo.Enabled = False

End If

picFind.Visible = False

cmbType.SetFocus

End Sub

Public Sub MouseNormalOnLbl()

'Commands Lable

lbl(0).ForeColor = vbWhite

lbl(0).Font.Underline = False

Page 82: Hindustan Zinc Limited

lbl(1).ForeColor = vbWhite

lbl(1).Font.Underline = False

lbl(2).ForeColor = vbWhite

lbl(2).Font.Underline = False

lbl(3).ForeColor = vbWhite

lbl(3).Font.Underline = False

lbl(4).ForeColor = vbWhite

lbl(4).Font.Underline = False

lbl(5).ForeColor = vbWhite

lbl(5).Font.Underline = False

'Navigation Label

lblnav(0).ForeColor = vbWhite

lblnav(0).Font.Underline = False

lblnav(1).ForeColor = vbWhite

lblnav(1).Font.Underline = False

lblnav(2).ForeColor = vbWhite

lblnav(2).Font.Underline = False

lblnav(3).ForeColor = vbWhite

lblnav(3).Font.Underline = False

Page 83: Hindustan Zinc Limited

End Sub

4. frmPurchase.frm

This form creates the interface for the function of creating purchase entries.

Coding:

Dim Duplicate As Boolean

Dim RowSelect As Integer

Dim FgRow As Integer

Dim rCount As Integer

Dim mSqlQry As String

Dim PurchaseId As Single

Dim PurMainCode As Single

Dim ObjectFoucs As Boolean 'True if Focus on TxtName(Supplier Name) . False if Focus on Grid

Dim OpQty As Single

Dim OpAmount As Single

Dim AvgCost As Single

Private Sub Form_Resize()

Me.Top = 1500

Me.Left = 4200

End Sub

Private Sub lbl_Click(Index As Integer)

Select Case Index

Case 0 'New

Page 84: Hindustan Zinc Limited

'Clearing all controls for New Data

Clear Me

fgPurchase.Clear

modWriteInGrid.SetPSGRID fgPurchase

Call AutoId

Dtp1.SetFocus

Dtp1.Value = Now

Modes True, False, Me

'Lock Navigation

LockNav Me

Case 1 'Save

Dim TranDetId As Single

Dim PurchaseRef As String

Dim TranMainId As Single

'Checking Data to Save

If Val(fgPurchase.Rows) < 3 Then

MsgBox "No data to save", vbInformation, "Message"

Exit Sub

End If

'If Account not selected

Page 85: Hindustan Zinc Limited

If TxtAcCode.Text = "" Or Val(TxtAcCode) = 0 Then

MsgBox "Select Account Name", vbCritical, "Message"

TxtName.SetFocus

Exit Sub

End If

'If New Purchase

If lbl(0).Enabled = False Then

TransactionRef = "Purchase-" & Val(txtId)

'Getting Maximum Code for Purchase Main

MaxNumber "PurId", "Max_Codes"

PurMainCode = Val(MaxNmbr)

'Getting Maximum Code for Transaction Main

MaxNumber "TransId", "Max_Codes"

TranMainId = Val(MaxNmbr)

'Inserting Data to TransactionMain Table

Con.Execute "insert into Transaction_Main (TransId,TransDate,TransType,Posted,TransRef) values (" & Val(TranMainId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , '" & TransactionType & "' ,'" & "N" & "', '" & TransactionRef & "')"

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for CREDIT ENTRY

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

Page 86: Hindustan Zinc Limited

TranDetId = Val(MaxNmbr)

PurchaseRef = "Purchase # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(TranMainId) & ", " & Val(TxtAcCode) & ", '" & PurchaseRef & "', 0 , " & Val(txtTotal) & ")"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

'----------------------------- Inserting to Purchase Main -----------------------------

'Inserting Data to PurchaseMain Table

Con.Execute "insert into Purchase_Main (PurId,PurDate,TotalAmount) values (" & Val(txtId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , " & Val(txtTotal) & " )"

'----------------------------- Inserting to Purchase Detail -----------------------------

For FgRow = 1 To fgPurchase.Rows - 2

'Getting Maximum Code for Purchase_Detail

MaxNumber "PurDetId", "Max_Codes"

PurchaseId = Val(MaxNmbr)

'Inserting Data to Purchase Detail

Con.Execute "Insert into Purchase_Detail (PurDetId, PurId, AcId, ProdId, Qty, Price) values (" & Val(PurchaseId) & ", " & Val(txtId) & ", " & Val(TxtAcCode) & ", '" &

Page 87: Hindustan Zinc Limited

fgPurchase.TextMatrix(FgRow, 5) & "', " & Val(fgPurchase.TextMatrix(FgRow, 2)) & ", " & Val(fgPurchase.TextMatrix(FgRow, 3)) & ")"

'Updating MaxCode for Purchase Detail

UpdateMaxNumber "PurDetId", Val(PurchaseId)

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for DEBIT ENTRY

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TranDetId = Val(MaxNmbr)

PurchaseRef = "Purchase # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(TranMainId) & ", " & Val(fgPurchase.TextMatrix(FgRow, 5)) & ", '" & PurchaseRef & "', " & Val(fgPurchase.TextMatrix(FgRow, 4)) & ", 0)"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

Next

'Updating Purchase Main Id

UpdateMaxNumber "PurId", Val(txtId)

Page 88: Hindustan Zinc Limited

'Updating Transaction Main Id

UpdateMaxNumber "TransId", Val(TranMainId)

'Getting Average Cost for the specifig product

Call GetTheAverage

MsgBox "Record saved", vbInformation, "Done"

lbl_Click (2)

Else

Dim MTranId As Single

'If existing record

PurMainCode = Val(txtId)

TransactionRef = "Purchase-" & Val(txtId)

'Deleting old records from PurchaseMain and Purchase Detail

Con.Execute "Delete from Purchase_Detail where PurId = " & Val(txtId) & ""

Con.Execute "Delete from Purchase_Main where PurId = " & Val(txtId) & ""

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from Transaction_Main where TransRef = '" & TransactionRef & "'", Con, adOpenStatic, adLockOptimistic

MTranId = Val(RS(0))

Page 89: Hindustan Zinc Limited

Con.Execute "Delete from Transaction_Detail Where TranId = " & Val(MTranId) & ""

Con.Execute "Delete from Transaction_Main where TransRef = '" & TransactionRef & "'"

'Checking Data to Save

If Val(fgPurchase.Rows) < 3 Then

MsgBox "No data to save", vbInformation, "Message"

Exit Sub

End If

'If Account not selected

If TxtAcCode.Text = "" Or Val(TxtAcCode) = 0 Then

MsgBox "Select Account Name", vbCritical, "Message"

TxtName.SetFocus

Exit Sub

End If

'Inserting Data to TransactionMain Table

Con.Execute "insert into Transaction_Main (TransId,TransDate,TransType,Posted,TransRef) values (" & Val(MTranId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , '" & TransactionType & "' ,'" & "N" & "', '" & TransactionRef & "')"

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for CREDIT ENTRY

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

Page 90: Hindustan Zinc Limited

TranDetId = Val(MaxNmbr)

PurchaseRef = "Purchase # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(MTranId) & ", " & Val(TxtAcCode) & ", '" & PurchaseRef & "', 0 , " & Val(txtTotal) & ")"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

'----------------------------- Inserting to Purchase Main -----------------------------

'Inserting Data to PurchaseMain Table

Con.Execute "insert into Purchase_Main (PurId,PurDate,TotalAmount) values (" & Val(txtId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , " & Val(txtTotal) & " )"

'----------------------------- Inserting to Purchase Detail -----------------------------

For FgRow = 1 To fgPurchase.Rows - 2

'Getting Maximum Code for Purchase_Detail

MaxNumber "PurDetId", "Max_Codes"

PurchaseId = Val(MaxNmbr)

'Inserting Data to Purchase Detail

Con.Execute "Insert into Purchase_Detail (PurDetId, PurId, AcId, ProdId, Qty, Price) values (" & Val(PurchaseId) & ", " & Val(txtId) & ", " & Val(TxtAcCode) & ", '" &

Page 91: Hindustan Zinc Limited

fgPurchase.TextMatrix(FgRow, 5) & "', " & Val(fgPurchase.TextMatrix(FgRow, 2)) & ", " & Val(fgPurchase.TextMatrix(FgRow, 3)) & ")"

'Updating MaxCode for Purchase Detail

UpdateMaxNumber "PurDetId", Val(PurchaseId)

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for DEBIT ENTRY (Product in grid Entry)

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TranDetId = Val(MaxNmbr)

PurchaseRef = "Purchase # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(MTranId) & ", " & Val(fgPurchase.TextMatrix(FgRow, 5)) & ", '" & PurchaseRef & "', " & Val(fgPurchase.TextMatrix(FgRow, 4)) & ", 0)"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

Next

'Getting Average Cost for the specifig product

Call GetTheAverage

MsgBox "Record Updated", vbInformation, "Done"

lbl_Click (2)

Page 92: Hindustan Zinc Limited

End If

Case 2 'Cancel

Clear Me

'UnLock Navigation

UnLockNav Me

fgPurchase.Clear

modWriteInGrid.SetPSGRID fgPurchase

Call ExistData

Modes False, True, Me

Dtp1.SetFocus

If RsNAV.RecordCount <= 0 Then

Exit Sub

Else

RsNAV.Requery

RsNAV.MoveFirst

End If

Page 93: Hindustan Zinc Limited

Case 3 'Delete

Dim mRef As String

Dim mTransID As Integer

mRef = "Purchase-" & Val(txtId)

If MsgBox("Do you want to delete this purchase?", vbQuestion + vbYesNo, "Delete Voucher") = vbYes Then

If MsgBox("System will be unable to recover the loss data. Continue ?", vbQuestion + vbYesNo, "Delete Voucher") = vbYes Then

'Deleting data from Transaction Main and Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select TransId from Transaction_Main where TransRef = '" & mRef & "'", Con, adOpenStatic, adLockOptimistic

mTransID = Val(RS(0))

Con.Execute "Delete from Transaction_Main where TransID = " & mTransID & ""

Con.Execute "Delete from Transaction_Detail where TranId = " & mTransID & ""

'Deleting data from Prucase Main and Detial

Con.Execute "Delete from Purchase_Detail where PurId = " & Val(txtId) & ""

Con.Execute "Delete from Purchase_Main where PurId = " & Val(txtId) & ""

MsgBox "Record Deleted", vbInformation, "Message"

lbl_Click (2)

End If

End If

Case 4 'Find

Page 94: Hindustan Zinc Limited

picFind.Visible = True

optId.Value = True

txtFindId.SetFocus

txtFindId.Text = ""

Case 5 'Exit

Unload Me

End Select

End Sub

Private Sub lblnav_Click(Index As Integer)

Select Case Index

Case 0 'Move First

On Error Resume Next

RsNAV.MoveFirst

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Exit Sub

Else

Call NAVData

End If

Case 1 'Move previous

On Error Resume Next

Page 95: Hindustan Zinc Limited

RsNAV.MovePrevious

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Call NAVData

End If

Case 2 'Move Next

On Error Resume Next

RsNAV.MoveNext

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

Case 3 'Move last

On Error Resume Next

RsNAV.MoveLast

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Page 96: Hindustan Zinc Limited

Else

Call NAVData

End If

End Select

End Sub

Private Sub lblnav_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3

MouseOver lblnav(Index)

End Select

End Sub

Private Sub cmdFind_Click()

If txtFindId.Text = "" Or Val(txtFindId) = 0 Then

MsgBox "Enter Purchase ID", vbCritical, "Message.."

txtFindId.SetFocus

Exit Sub

End If

Call FindRecord

Page 97: Hindustan Zinc Limited

End Sub

Private Sub cmdFindCancel_Click()

picFind.Visible = False

Dtp1.SetFocus

End Sub

Private Sub Dtp1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 13 Then

TxtName.SetFocus

End If

End Sub

Private Sub fgpurchase_Click()

RowSelect = fgPurchase.RowSel

End Sub

Private Sub fgPurchase_GotFocus()

ObjectFoucs = False

End Sub

Private Sub fgpurchase_KeyDown(KeyCode As Integer, Shift As Integer)

Page 98: Hindustan Zinc Limited

'If CTRL + SPACE is pressed

If fgPurchase.Col = 1 Then

If KeyCode = 32 And Shift = 2 Then

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

FillGridAccounts

SetGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

End If

End If

'Delete Row from Grid

If KeyCode = vbKeyDelete Then

If fgPurchase.Rows > 2 And fgPurchase.TextMatrix(fgPurchase.Row, 1) <> "" Then

If MsgBox("Do you want to delete this line?", vbQuestion + vbYesNo, "Delete Line") = vbYes Then

txtTotal.Text = Val(txtTotal) - Val(fgPurchase.TextMatrix(fgPurchase.Row, 4))

fgPurchase.RemoveItem RowSelect

End If

Else

MsgBox "Blank or Last line can not be deleted", vbCritical, "Message "

Page 99: Hindustan Zinc Limited

Exit Sub

End If

End If

End Sub

Private Sub fgpurchase_KeyPress(KeyAscii As Integer)

EditGridPS fgPurchase, KeyAscii

End Sub

Private Sub fgPurchase_LeaveCell()

Select Case fgPurchase.Col

Case 1

Call Calculatetotal

Case 2, 3

'Total of Row i.e Qty * Price

fgPurchase.TextMatrix(fgPurchase.Row, 4) = Val(fgPurchase.TextMatrix(fgPurchase.Row, 2)) * Val(fgPurchase.TextMatrix(fgPurchase.Row, 3))

End Select

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

'Changing Control focus on Enter

Page 100: Hindustan Zinc Limited

ChangeFocusOnEnter KeyAscii, Me

End Sub

Private Sub Form_Load()

'Setting up flexgrid

SetPSGRID fgPurchase

'Call Existing Data

Call ExistData

'Calculating Total

Call Calculatetotal

'Calling Data for navigation

Set RsNAV = New ADODB.Recordset

If RsNAV.State = 1 Then RsNAV.Close

RsNAV.Open "Select * from Purchase_Main Order By PurId", Con, adOpenStatic, adLockOptimistic

'Defining Purchase Type

TransactionType = "Purchase"

' Setting ObjectFocus variable to True

ObjectFoucs = True

Page 101: Hindustan Zinc Limited

End Sub

Public Sub FillGridAccounts()

'Filling all Accounts Data in Search grid

If ObjectFoucs = True Then ' If focus on TxtName

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType NOT IN ('Product')"

Else ' If focus on Product Grid

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType IN ('Product')"

End If

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

Set MshSearch.DataSource = RS

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Private Sub Image_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Page 102: Hindustan Zinc Limited

Private Sub lbl_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3, 4, 5

MouseOver lbl(Index)

End Select

End Sub

Private Sub TxtGrdSrch_Change()

Call SearchRecord

End Sub

Public Sub SearchRecord()

'Filling the Search grid with Critarial Data

Dim SearchedRowCount As Integer

If PicSrchGrid.Visible = True Then

MshSearch.Rows = 2

MshSearch.Row = 0

SearchedRowCount = 0

If ObjectFoucs = True Then ' If focus on TxtName

Page 103: Hindustan Zinc Limited

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType NOT IN ('Product') And AcTitle Like '" & TxtGrdSrch.Text & "%'"

Else ' If focus on Product Grid

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType IN ('Product') And AcTitle Like '" & TxtGrdSrch.Text & "%'"

End If

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

If RS.RecordCount <= 0 Then

MshSearch.Clear

With MshSearch

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

End With

MshSearch.Rows = 2

Exit Sub

End If

'Fetching data into Search Grid

Set MshSearch.DataSource = RS

Page 104: Hindustan Zinc Limited

'' For SearchedRowCount = 1 To RS.RecordCount

''

'' If SearchedRowCount >= MshSearch.Rows - 1 Then

'' MshSearch.Rows = MshSearch.Rows + 1

'' MshSearch.Row = MshSearch.Row + 1

'' End If

''

'' MshSearch.TextMatrix(SearchedRowCount, 0) = RS(0)

'' MshSearch.TextMatrix(SearchedRowCount, 1) = RS(1)

'' MshSearch.TextMatrix(SearchedRowCount, 2) = RS(2)

''

''

'' RS.MoveNext

'' Next

MshSearch.Col = 0

MshSearch.Row = 0

MshSearch.ColAlignment(0) = 3

End If

End Sub

Private Sub MshSearch_DblClick()

If MshSearch.Row = 0 Then

Exit Sub

End If

Page 105: Hindustan Zinc Limited

If ObjectFoucs = True Then

TxtAcCode.Text = Val(MshSearch.TextMatrix(MshSearch.Row, 0))

TxtName.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

TxtName.SetFocus

ObjectFoucs = False

Else

'Checking for duplicate entry in grid

Call CheckDuplicate

If Duplicate = True Then

Exit Sub

End If

fgPurchase.TextMatrix(fgPurchase.Row, 1) = MshSearch.TextMatrix(MshSearch.Row, 1)

fgPurchase.TextMatrix(fgPurchase.Row, 5) = MshSearch.TextMatrix(MshSearch.Row, 0)

fgPurchase.SetFocus

End If

PicSrchGrid.Visible = False

fgPurchase.Col = 1

End Sub

Public Sub CheckDuplicate()

Dim dRow As Integer

For dRow = 1 To fgPurchase.Rows - 2

If fgPurchase.TextMatrix(dRow, 5) = MshSearch.TextMatrix(MshSearch.Row, 0) Then

Page 106: Hindustan Zinc Limited

MsgBox "Account Title aleready selected", vbInformation, "Message"

Duplicate = True

Exit Sub

Else

Duplicate = False

End If

Next

End Sub

Private Sub MshSearch_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

MshSearch_DblClick

End If

If KeyAscii = 27 Then

PicSrchGrid.Visible = False

fgPurchase.SetFocus

Exit Sub

End If

If KeyAscii = 8 Then

If TxtGrdSrch.Text <> "" Then TxtGrdSrch.Text = Left$(TxtGrdSrch.Text, (Len(TxtGrdSrch.Text) - 1))

ElseIf KeyAscii = 13 Then

KeyAscii = 0

Else

Page 107: Hindustan Zinc Limited

TxtGrdSrch.Text = TxtGrdSrch.Text + Chr$(KeyAscii)

End If

End Sub

Private Sub TxtGrdSrch_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then

PicSrchGrid.Visible = False

fgPurchase.SetFocus

Exit Sub

End If

End Sub

Public Sub ExistData()

'Getting data from Purchase

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT PurId, PurDate, TotalAmount from Purchase_Main", Con, adOpenStatic, adLockOptimistic

If RS.EOF = True Then

Exit Sub

End If

txtId.Text = Val(RS(0))

Dtp1.Value = RS(1)

Page 108: Hindustan Zinc Limited

RS.Close

'Getting Supplier Data

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT Accounts.AcId, Accounts.AcTitle, Purchase_Detail.PurId FROM Accounts INNER JOIN Purchase_Detail ON Accounts.AcId = Purchase_Detail.AcId where PurId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

TxtAcCode.Text = Val(RS(0))

TxtName.Text = RS(1)

'Getting data from Purchase_Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT * from ViewPurchase where PurId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgPurchase.Rows = 2

fgPurchase.Row = 1

For rCount = 1 To RS.RecordCount

Page 109: Hindustan Zinc Limited

fgPurchase.TextMatrix(fgPurchase.Row, 1) = RS(0) 'Prod Name

fgPurchase.TextMatrix(fgPurchase.Row, 2) = Val(RS(1)) 'Qty

fgPurchase.TextMatrix(fgPurchase.Row, 3) = Val(RS(2)) 'Price

fgPurchase.TextMatrix(fgPurchase.Row, 4) = Val(RS(1)) * Val(RS(2)) 'Amount

fgPurchase.TextMatrix(fgPurchase.Row, 5) = Val(RS(3)) 'Prod Code

fgPurchase.Rows = fgPurchase.Rows + 1

fgPurchase.Row = fgPurchase.Row + 1

RS.MoveNext

Next

End Sub

Public Sub NAVData()

'Getting data from Purchase

txtId.Text = Val(RsNAV(0))

Dtp1.Value = RsNAV(1)

'Getting Supplier Data

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT Accounts.AcId, Accounts.AcTitle, Purchase_Detail.PurId FROM Accounts INNER JOIN Purchase_Detail ON Accounts.AcId = Purchase_Detail.AcId where PurId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

TxtAcCode.Text = Val(RS(0))

TxtName.Text = RS(1)

Page 110: Hindustan Zinc Limited

'Getting data from Purchase_Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT * from ViewPurchase where PurId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgPurchase.Rows = 2

fgPurchase.Row = 1

For rCount = 1 To RS.RecordCount

fgPurchase.TextMatrix(fgPurchase.Row, 1) = RS(0) 'Prod Name

fgPurchase.TextMatrix(fgPurchase.Row, 2) = Val(RS(1)) 'Qty

fgPurchase.TextMatrix(fgPurchase.Row, 3) = Val(RS(2)) 'Price

fgPurchase.TextMatrix(fgPurchase.Row, 4) = Val(RS(1)) * Val(RS(2)) 'Amount

fgPurchase.TextMatrix(fgPurchase.Row, 5) = Val(RS(3)) 'Prod Code

fgPurchase.Rows = fgPurchase.Rows + 1

fgPurchase.Row = fgPurchase.Row + 1

Page 111: Hindustan Zinc Limited

RS.MoveNext

Next

Calculatetotal

End Sub

Public Sub AutoId()

'Calling MaxNumber function to get Auto Id for the record

MaxNumber "PurId", "Max_Codes"

txtId.Text = Val(MaxNmbr)

End Sub

Public Sub Calculatetotal()

Dim mRow As Integer

txtTotal.Text = ""

For mRow = 1 To fgPurchase.Rows - 1

txtTotal.Text = Val(txtTotal) + Val(fgPurchase.TextMatrix(mRow, 4))

Next mRow

End Sub

Private Sub TxtAcCode_GotFocus()

TxtName.SetFocus

End Sub

Private Sub TxtName_GotFocus()

Page 112: Hindustan Zinc Limited

ObjectFoucs = True

End Sub

Private Sub TxtName_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 32 And Shift = 2 Then

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

FillGridAccounts

SetGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

End If

End Sub

Public Sub SetGridAccounts()

'Setting of Search Grid

With MshSearch

.ColWidth(1) = 2500

.ColWidth(2) = 1500

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

Page 113: Hindustan Zinc Limited

.RowHeight(0) = 400

.ColAlignmentFixed(0) = 4

.ColAlignmentFixed(1) = 4

.ColAlignmentFixed(2) = 4

End With

End Sub

Private Sub TxtName_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

fgPurchase.SetFocus

Else

KeyAscii = 0

Exit Sub

End If

End Sub

Public Sub FindRecord()

mSqlQry = "Select * from Purchase_Main Where PurId = " & Val(txtFindId) & ""

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Page 114: Hindustan Zinc Limited

MsgBox "No purchase found with this ID", vbCritical, "Message.."

txtFindId.SetFocus

Exit Sub

Else

ShowFoundData

End If

End Sub

Public Sub ShowFoundData()

'Getting data from Purchase

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT PurId, PurDate, TotalAmount from Purchase_Main Where PurId = " & Val(txtFindId) & "", Con, adOpenStatic, adLockOptimistic

If RS.EOF = True Then

Exit Sub

End If

txtId.Text = Val(RS(0))

Dtp1.Value = RS(1)

RS.Close

'Getting Supplier Data

Set RS = New ADODB.Recordset

Page 115: Hindustan Zinc Limited

If RS.State = 1 Then RS.Close

RS.Open "SELECT Accounts.AcId, Accounts.AcTitle, Purchase_Detail.PurId FROM Accounts INNER JOIN Purchase_Detail ON Accounts.AcId = Purchase_Detail.AcId where PurId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

TxtAcCode.Text = Val(RS(0))

TxtName.Text = RS(1)

'Getting data from Purchase_Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT * from ViewPurchase where PurId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgPurchase.Rows = 2

fgPurchase.Row = 1

For rCount = 1 To RS.RecordCount

fgPurchase.TextMatrix(fgPurchase.Row, 1) = RS(0) 'Prod Name

fgPurchase.TextMatrix(fgPurchase.Row, 2) = Val(RS(1)) 'Qty

fgPurchase.TextMatrix(fgPurchase.Row, 3) = Val(RS(2)) 'Price

fgPurchase.TextMatrix(fgPurchase.Row, 4) = Val(RS(1)) * Val(RS(2)) 'Amount

Page 116: Hindustan Zinc Limited

fgPurchase.TextMatrix(fgPurchase.Row, 5) = Val(RS(3)) 'Prod Code

fgPurchase.Rows = fgPurchase.Rows + 1

fgPurchase.Row = fgPurchase.Row + 1

RS.MoveNext

Next

picFind.Visible = False

Dtp1.SetFocus

End Sub

Public Sub MouseNormalOnLbl()

'Commands Lable

lbl(0).ForeColor = vbWhite

lbl(0).Font.Underline = False

lbl(1).ForeColor = vbWhite

lbl(1).Font.Underline = False

lbl(2).ForeColor = vbWhite

lbl(2).Font.Underline = False

lbl(3).ForeColor = vbWhite

lbl(3).Font.Underline = False

lbl(4).ForeColor = vbWhite

Page 117: Hindustan Zinc Limited

lbl(4).Font.Underline = False

lbl(5).ForeColor = vbWhite

lbl(5).Font.Underline = False

'Navigation Label

lblnav(0).ForeColor = vbWhite

lblnav(0).Font.Underline = False

lblnav(1).ForeColor = vbWhite

lblnav(1).Font.Underline = False

lblnav(2).ForeColor = vbWhite

lblnav(2).Font.Underline = False

lblnav(3).ForeColor = vbWhite

lblnav(3).Font.Underline = False

End Sub

Public Sub GetTheAverage()

Dim CurQty As Single

Dim CurAmount As Single

Dim mTotalQty As Single

Dim mTotalAmount As Single

Dim myRow As Integer

Page 118: Hindustan Zinc Limited

For myRow = 1 To fgPurchase.Rows - 2

Set RsMisc = New ADODB.Recordset

If RsMisc.State = 1 Then RsMisc.Close

RsMisc.Open "Select Qty, Amount, ProdId from Product_Openings where ProdId = " & Val(fgPurchase.TextMatrix(myRow, 5)) & "", Con, adOpenStatic, adLockOptimistic

If Not IsNull(RsMisc(0)) Then

OpQty = Val(RsMisc(0))

OpAmount = Val(RsMisc(1))

Else

OpQty = 0

OpAmount = 0

End If

CurQty = Val(fgPurchase.TextMatrix(myRow, 2))

CurAmount = Val(fgPurchase.TextMatrix(myRow, 4))

mTotalQty = Val(OpQty) + Val(CurQty)

mTotalAmount = Val(OpAmount) + Val(CurAmount)

AvgCost = Round(Val(mTotalAmount) / Val(mTotalQty), 2)

Con.Execute "Update Avg_Cost set PurAvg = " & Val(AvgCost) & " Where ProdId = " & Val(fgPurchase.TextMatrix(myRow, 5)) & ""

Next

End Sub

Page 119: Hindustan Zinc Limited

5. frmSale.frm

This form creates the interface for the function of creating sales entries.

Coding:

Dim Duplicate As Boolean

Dim RowSelect As Integer

Dim rCount As Integer

Dim mSqlQry As String

Dim SaleId As Single

Dim SaleMainCode As Single

Dim ObjectFoucs As Boolean 'True if Focus on TxtName(Supplier Name) . False if Focus on Grid

Dim OpQty As Single

Dim PurQty As Single

Dim SaleQty As Single

Dim Stock As Single

Dim mAvgCost As Single

Dim PLAmount As Single

Dim FgRow As Integer

Private Sub Form_Resize()

Me.Top = 1500

Me.Left = 4200

End Sub

Private Sub lbl_Click(Index As Integer)

Select Case Index

Case 0 'New

Page 120: Hindustan Zinc Limited

'Clearing all controls for New Data

Clear Me

fgSale.Clear

modWriteInGrid.SetPSGRID fgSale

Call AutoId

Dtp1.SetFocus

Dtp1.Value = Now

Modes True, False, Me

'Lock Navigation

LockNav Me

Case 1 'Save

Dim TranDetId As Single

Dim SaleRef As String

Dim TranMainId As Single

'Checking Data to Save

If Val(fgSale.Rows) < 3 Then

MsgBox "No data to save", vbInformation, "Message"

Exit Sub

End If

'If Account not selected

Page 121: Hindustan Zinc Limited

If TxtAcCode.Text = "" Or Val(TxtAcCode) = 0 Then

MsgBox "Select Account Name", vbCritical, "Message"

TxtName.SetFocus

Exit Sub

End If

'If New Sale

If lbl(0).Enabled = False Then

TransactionRef = "Sale-" & Val(txtId)

'Getting Maximum Code for Sale Main

MaxNumber "SaleId", "Max_Codes"

SaleMainCode = Val(MaxNmbr)

'Getting Maximum Code for Transaction Main

MaxNumber "TransId", "Max_Codes"

TranMainId = Val(MaxNmbr)

'Inserting Data to TransactionMain Table

Con.Execute "insert into Transaction_Main (TransId,TransDate,TransType,Posted,TransRef) values (" & Val(TranMainId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , '" & TransactionType & "' ,'" & "N" & "', '" & TransactionRef & "')"

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for DEBIT ENTRY (Customer or th whom the goods sold)

'Getting Maximum Code for Transaction_Detail

Page 122: Hindustan Zinc Limited

MaxNumber "TransDetId", "Max_Codes"

TranDetId = Val(MaxNmbr)

SaleRef = "Sale # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(TranMainId) & ", " & Val(TxtAcCode) & ", '" & SaleRef & "', " & Val(txtTotal) & " , 0)"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

'----------------------------- Inserting to Sale Main -----------------------------

Con.Execute "insert into Sale_Main (SaleId,SaleDate,TotalAmount) values (" & Val(txtId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , " & Val(txtTotal) & " )"

'----------------------------- Inserting to Sale Detail -----------------------------

For FgRow = 1 To fgSale.Rows - 2

'Getting Maximum Code for Sale_Detail

MaxNumber "SaleDetId", "Max_Codes"

SaleId = Val(MaxNmbr)

'Inserting Data to Sale Detail

Con.Execute "Insert into Sale_Detail (SaleDetId, SaleId, AcId, ProdId, Qty, Price) values (" & Val(SaleId) & ", " & Val(txtId) & ", " & Val(TxtAcCode) & ", '" &

Page 123: Hindustan Zinc Limited

fgSale.TextMatrix(FgRow, 5) & "', " & Val(fgSale.TextMatrix(FgRow, 2)) & ", " & Val(fgSale.TextMatrix(FgRow, 3)) & ")"

'Updating MaxCode for Sale Detail

UpdateMaxNumber "SaleDetId", Val(SaleId)

'Inserting Data Into ProfitLoss

Call GetAvgCostUpdate

PLAmount = Val(fgSale.TextMatrix(FgRow, 3)) - Val(fgSale.TextMatrix(FgRow, 6))

PLAmount = Val(PLAmount) * Val(fgSale.TextMatrix(FgRow, 2))

Con.Execute "Insert Into ProfitLoss Values('" & Format(Dtp1.Value, "mm/dd/yyyy") & "', " & Val(txtId) & ", " & fgSale.TextMatrix(FgRow, 5) & ", " & Val(fgSale.TextMatrix(FgRow, 2)) & ", " & Val(fgSale.TextMatrix(FgRow, 6)) & ", " & Val(fgSale.TextMatrix(FgRow, 3)) & ", " & Val(PLAmount) & " )"

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for CREDIT ENTRY (Product entry)

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TranDetId = Val(MaxNmbr)

SaleRef = "Sale # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(TranMainId) & ", " & Val(fgSale.TextMatrix(FgRow, 5)) & ", '" & SaleRef & "', 0, " & Val(fgSale.TextMatrix(FgRow, 4)) & ")"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

Page 124: Hindustan Zinc Limited

Next

'Updating Sale Main Id

UpdateMaxNumber "SaleId", Val(txtId)

'Updating Transaction Main Id

UpdateMaxNumber "TransId", Val(TranMainId)

MsgBox "Record saved", vbInformation, "Done"

lbl_Click (2)

Else

Dim MTranId As Single

'If existing record

SaleMainCode = Val(txtId)

TransactionRef = "Sale-" & Val(txtId)

'Deleting old records from SaleMain and Sale Detail

Con.Execute "Delete from Sale_Detail where SaleId = " & Val(txtId) & ""

Con.Execute "Delete from Sale_Main where SaleId = " & Val(txtId) & ""

'Deleting Record from ProfitLoss Table

Con.Execute "Delete from ProfitLoss where SaleId = " & Val(txtId) & ""

Page 125: Hindustan Zinc Limited

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from Transaction_Main where TransRef = '" & TransactionRef & "'", Con, adOpenStatic, adLockOptimistic

MTranId = Val(RS(0))

Con.Execute "Delete from Transaction_Detail Where TranId = " & Val(MTranId) & ""

Con.Execute "Delete from Transaction_Main where TransRef = '" & TransactionRef & "'"

'Checking Data to Save

If Val(fgSale.Rows) < 3 Then

MsgBox "No data to save", vbInformation, "Message"

Exit Sub

End If

'If Account not selected

If TxtAcCode.Text = "" Or Val(TxtAcCode) = 0 Then

MsgBox "Select Account Name", vbCritical, "Message"

TxtName.SetFocus

Exit Sub

End If

'Inserting Data to TransactionMain Table

Con.Execute "insert into Transaction_Main (TransId,TransDate,TransType,Posted,TransRef) values (" & Val(MTranId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , '" & TransactionType & "' ,'" & "N" & "', '" &

Page 126: Hindustan Zinc Limited

TransactionRef & "')"

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for DEBIT ENTRY (Customer or to whome the goods sold)

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TranDetId = Val(MaxNmbr)

SaleRef = "Sale # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(MTranId) & ", " & Val(TxtAcCode) & ", '" & SaleRef & "', " & Val(txtTotal) & " , 0)"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

'----------------------------- Inserting to Sale Main -----------------------------

'Inserting Data to SaleMain Table

Con.Execute "insert into Sale_Main (SaleId,SaleDate,TotalAmount) values (" & Val(txtId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , " & Val(txtTotal) & " )"

'----------------------------- Inserting to Sale Detail -----------------------------

For FgRow = 1 To fgSale.Rows - 2

'Getting Maximum Code for Sale_Detail

Page 127: Hindustan Zinc Limited

MaxNumber "SaleDetId", "Max_Codes"

SaleId = Val(MaxNmbr)

'Inserting Data to Sale Detail

Con.Execute "Insert into Sale_Detail (SaleDetId, SaleId, AcId, ProdId, Qty, Price) values (" & Val(SaleId) & ", " & Val(txtId) & ", " & Val(TxtAcCode) & ", '" & fgSale.TextMatrix(FgRow, 5) & "', " & Val(fgSale.TextMatrix(FgRow, 2)) & ", " & Val(fgSale.TextMatrix(FgRow, 3)) & ")"

'Updating MaxCode for Sale Detail

UpdateMaxNumber "SaleDetId", Val(SaleId)

'Inserting Data Into ProfitLoss

Call GetAvgCostUpdate

PLAmount = Val(fgSale.TextMatrix(FgRow, 3)) - Val(fgSale.TextMatrix(FgRow, 6))

PLAmount = Val(PLAmount) * Val(fgSale.TextMatrix(FgRow, 2))

Con.Execute "Insert Into ProfitLoss Values('" & Format(Dtp1.Value, "mm/dd/yyyy") & "', " & Val(txtId) & ", " & fgSale.TextMatrix(FgRow, 5) & ", " & Val(fgSale.TextMatrix(FgRow, 2)) & ", " & Val(fgSale.TextMatrix(FgRow, 6)) & ", " & Val(fgSale.TextMatrix(FgRow, 3)) & ", " & Val(PLAmount) & " )"

'---------------------INSERTING DATA INTO TRANSACTION_DETAIL for CREDIT ENTRY (Product in grid Entry)

'Getting Maximum Code for Transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TranDetId = Val(MaxNmbr)

SaleRef = "Sale # " & Val(txtId)

'Inserting Data to Transaction Detail

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TranDetId) & ", " & Val(MTranId) & ", " &

Page 128: Hindustan Zinc Limited

Val(fgSale.TextMatrix(FgRow, 5)) & ", '" & SaleRef & "', 0, " & Val(fgSale.TextMatrix(FgRow, 4)) & ")"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TranDetId)

Next

MsgBox "Record Updated", vbInformation, "Done"

lbl_Click (2)

End If

Case 2 'Cancel

Clear Me

'UnLock Navigation

UnLockNav Me

fgSale.Clear

modWriteInGrid.SetPSGRID fgSale

Call ExistData

Modes False, True, Me

Dtp1.SetFocus

Page 129: Hindustan Zinc Limited

If RsNAV.RecordCount <= 0 Then

Exit Sub

Else

RsNAV.Requery

RsNAV.MoveFirst

End If

Case 3 'Delete

Dim mRef As String

Dim mTransID As Integer

mRef = "Sale-" & Val(txtId)

If MsgBox("Do you want to delete this purchase?", vbQuestion + vbYesNo, "Delete Voucher") = vbYes Then

If MsgBox("System will be unable to recover the loss data. Continue ?", vbQuestion + vbYesNo, "Delete Voucher") = vbYes Then

'Deleting data from Transaction Main and Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select TransId from Transaction_Main where TransRef = '" & mRef & "'", Con, adOpenStatic, adLockOptimistic

mTransID = Val(RS(0))

Con.Execute "Delete from Transaction_Main where TransID = " & mTransID & ""

Con.Execute "Delete from Transaction_Detail where TranId = " & mTransID & ""

'Deleting data from Transaction Main and Detail

Con.Execute "Delete from Sale_Detail where SaleId = " & Val(txtId) & ""

Con.Execute "Delete from Sale_Main where SaleId = " & Val(txtId) & ""

Page 130: Hindustan Zinc Limited

MsgBox "Record Deleted", vbInformation, "Message"

lbl_Click (2)

End If

End If

Case 4 'Find

picFind.Visible = True

optId.Value = True

txtFindId.SetFocus

txtFindId.Text = ""

Case 5 'Exit

Unload Me

End Select

End Sub

Private Sub lbl_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3, 4, 5

MouseOver lbl(Index)

End Select

End Sub

Page 131: Hindustan Zinc Limited

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Private Sub Image_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Private Sub lblnav_Click(Index As Integer)

Select Case Index

Case 0 'Move First

On Error Resume Next

RsNAV.MoveFirst

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Exit Sub

Else

Call NAVData

End If

Case 1 'Move previous

On Error Resume Next

RsNAV.MovePrevious

Page 132: Hindustan Zinc Limited

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Call NAVData

End If

Case 2 'Move Next

On Error Resume Next

RsNAV.MoveNext

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

Case 3 'Move last

On Error Resume Next

RsNAV.MoveLast

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

Page 133: Hindustan Zinc Limited

End If

End Select

End Sub

Private Sub lblnav_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3

MouseOver lblnav(Index)

End Select

End Sub

Private Sub cmdFind_Click()

If txtFindId.Text = "" Or Val(txtFindId) = 0 Then

MsgBox "Enter Sale ID", vbCritical, "Message.."

txtFindId.SetFocus

Exit Sub

End If

Call FindRecord

End Sub

Page 134: Hindustan Zinc Limited

Private Sub cmdFindCancel_Click()

picFind.Visible = False

Dtp1.SetFocus

End Sub

Private Sub Dtp1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 13 Then

TxtName.SetFocus

End If

End Sub

Private Sub fgSale_Click()

RowSelect = fgSale.RowSel

End Sub

Private Sub fgSale_EnterCell()

Select Case fgSale.Col

Case 1

lblstock.Caption = "Available Stock : "

Case 3

Call CheckStock_n_Price

If Val(Stock) < Val(fgSale.TextMatrix(fgSale.Row, 2)) Then

Page 135: Hindustan Zinc Limited

MsgBox "Not enough stock to sale", vbCritical, "Message"

fgSale.Col = 2

Exit Sub

End If

End Select

End Sub

Private Sub fgSale_GotFocus()

ObjectFoucs = False

End Sub

Private Sub fgSale_KeyDown(KeyCode As Integer, Shift As Integer)

'If CTRL + SPACE is pressed

If fgSale.Col = 1 Then

If KeyCode = 32 And Shift = 2 Then

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

FillGridAccounts

SetGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

End If

End If

'Delete Row from Grid

Page 136: Hindustan Zinc Limited

If KeyCode = vbKeyDelete Then

If fgSale.Rows > 2 And fgSale.TextMatrix(fgSale.Row, 1) <> "" Then

If MsgBox("Do you want to delete this line?", vbQuestion + vbYesNo, "Delete Line") = vbYes Then

txtTotal.Text = Val(txtTotal) - Val(fgSale.TextMatrix(fgSale.Row, 4))

fgSale.RemoveItem RowSelect

End If

Else

MsgBox "Blank or Last line can not be deleted", vbCritical, "Message "

Exit Sub

End If

End If

End Sub

Private Sub fgSale_KeyPress(KeyAscii As Integer)

EditGridPS fgSale, KeyAscii

End Sub

Private Sub fgSale_LeaveCell()

Select Case fgSale.Col

Case 1

Call Calculatetotal

Page 137: Hindustan Zinc Limited

Case 2, 3

'Total of Row i.e Qty * Price

fgSale.TextMatrix(fgSale.Row, 4) = Val(fgSale.TextMatrix(fgSale.Row, 2)) * Val(fgSale.TextMatrix(fgSale.Row, 3))

End Select

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

'Changing Control focus on Enter

ChangeFocusOnEnter KeyAscii, Me

End Sub

Private Sub Form_Load()

Me.Top = 1500

Me.Left = 3000

'Setting up flexgrid

SetPSGRID fgSale

'Call Existing Data

Call ExistData

'Calculating Total

Page 138: Hindustan Zinc Limited

Call Calculatetotal

'Calling Data for navigation

Set RsNAV = New ADODB.Recordset

If RsNAV.State = 1 Then RsNAV.Close

RsNAV.Open "Select * from Sale_Main Order By SaleId", Con, adOpenStatic, adLockOptimistic

'Defining Sale Type

TransactionType = "Sale"

' Setting ObjectFocus variable to True

ObjectFoucs = True

End Sub

Public Sub FillGridAccounts()

'Filling all Accounts Data in Search grid

If ObjectFoucs = True Then ' If focus on TxtName

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType NOT IN ('Product')"

Else ' If focus on Product Grid

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType IN ('Product')"

End If

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 139: Hindustan Zinc Limited

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

Set MshSearch.DataSource = RS

End Sub

Private Sub TxtGrdSrch_Change()

Call SearchRecord

End Sub

Public Sub SearchRecord()

'Filling the Search grid with Critarial Data

Dim SearchedRowCount As Integer

If PicSrchGrid.Visible = True Then

MshSearch.Rows = 2

MshSearch.Row = 0

SearchedRowCount = 0

If ObjectFoucs = True Then ' If focus on TxtName

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType NOT IN ('Product') And AcTitle Like '" & TxtGrdSrch.Text & "%'"

Else ' If focus on Product Grid

SQLQry = "SELECT ViewHeadWise.AcId, ViewHeadWise.AcTitle, ViewHeadWise.AcType FROM ViewHeadWise Where AcType IN ('Product') And AcTitle Like '" & TxtGrdSrch.Text & "%'"

Page 140: Hindustan Zinc Limited

End If

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

If RS.RecordCount <= 0 Then

MshSearch.Clear

With MshSearch

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

End With

MshSearch.Rows = 2

Exit Sub

End If

'Fetching data into Search Grid

Set MshSearch.DataSource = RS

MshSearch.Col = 0

MshSearch.Row = 0

MshSearch.ColAlignment(0) = 3

End If

Page 141: Hindustan Zinc Limited

End Sub

Private Sub MshSearch_DblClick()

If MshSearch.Row = 0 Then

Exit Sub

End If

If ObjectFoucs = True Then

TxtAcCode.Text = Val(MshSearch.TextMatrix(MshSearch.Row, 0))

TxtName.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

TxtName.SetFocus

ObjectFoucs = False

Else

'Checking for duplicate entry in grid

Call CheckDuplicate

If Duplicate = True Then

Exit Sub

End If

fgSale.TextMatrix(fgSale.Row, 1) = MshSearch.TextMatrix(MshSearch.Row, 1)

fgSale.TextMatrix(fgSale.Row, 5) = MshSearch.TextMatrix(MshSearch.Row, 0)

fgSale.TextMatrix(fgSale.Row, 6) = Val(mAvgCost)

fgSale.SetFocus

Call CheckStock_n_Price

End If

Page 142: Hindustan Zinc Limited

PicSrchGrid.Visible = False

fgSale.Col = 1

End Sub

Public Sub CheckDuplicate()

Dim dRow As Integer

For dRow = 1 To fgSale.Rows - 2

If fgSale.TextMatrix(dRow, 5) = MshSearch.TextMatrix(MshSearch.Row, 0) Then

MsgBox "Account Title aleready selected", vbInformation, "Message"

Duplicate = True

Exit Sub

Else

Duplicate = False

End If

Next

End Sub

Private Sub MshSearch_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

MshSearch_DblClick

End If

If KeyAscii = 27 Then

Page 143: Hindustan Zinc Limited

PicSrchGrid.Visible = False

fgSale.SetFocus

Exit Sub

End If

If KeyAscii = 8 Then

If TxtGrdSrch.Text <> "" Then TxtGrdSrch.Text = Left$(TxtGrdSrch.Text, (Len(TxtGrdSrch.Text) - 1))

ElseIf KeyAscii = 13 Then

KeyAscii = 0

Else

TxtGrdSrch.Text = TxtGrdSrch.Text + Chr$(KeyAscii)

End If

End Sub

Private Sub TxtGrdSrch_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then

PicSrchGrid.Visible = False

fgSale.SetFocus

Exit Sub

End If

End Sub

Public Sub ExistData()

'Getting data from Sale

Set RS = New ADODB.Recordset

Page 144: Hindustan Zinc Limited

If RS.State = 1 Then RS.Close

RS.Open "SELECT SaleId, SaleDate, TotalAmount from Sale_Main", Con, adOpenStatic, adLockOptimistic

If RS.EOF = True Then

Exit Sub

End If

txtId.Text = Val(RS(0))

Dtp1.Value = RS(1)

RS.Close

'Getting Supplier Data

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT Accounts.AcId, Accounts.AcTitle, Sale_Detail.SaleId FROM Accounts INNER JOIN Sale_Detail ON Accounts.AcId = Sale_Detail.AcId where SaleId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

TxtAcCode.Text = Val(RS(0))

TxtName.Text = RS(1)

'Getting data from Sale_Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT * from ViewSale where SaleId = " & Val(txtId) & ""

Page 145: Hindustan Zinc Limited

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgSale.Rows = 2

fgSale.Row = 1

For rCount = 1 To RS.RecordCount

fgSale.TextMatrix(fgSale.Row, 1) = RS(0) 'Prod Name

fgSale.TextMatrix(fgSale.Row, 2) = Val(RS(1)) 'Qty

fgSale.TextMatrix(fgSale.Row, 3) = Val(RS(2)) 'Price

fgSale.TextMatrix(fgSale.Row, 4) = Val(RS(1)) * Val(RS(2)) 'Amount

fgSale.TextMatrix(fgSale.Row, 5) = Val(RS(3)) 'Prod Code

fgSale.Rows = fgSale.Rows + 1

fgSale.Row = fgSale.Row + 1

RS.MoveNext

Next

End Sub

Private Sub PicFirst_Click()

On Error Resume Next

RsNAV.MoveFirst

Page 146: Hindustan Zinc Limited

lblnav.Caption = "1"

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Exit Sub

Else

Call NAVData

End If

End Sub

Private Sub PicLast_Click()

On Error Resume Next

RsNAV.MoveLast

lblnav.Caption = Val(RsNAV.RecordCount)

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

End Sub

Private Sub PicNext_Click()

On Error Resume Next

RsNAV.MoveNext

Page 147: Hindustan Zinc Limited

lblnav.Caption = Val(lblnav) + 1

If RsNAV.EOF = True Then

lblnav.Caption = Val(lblnav) - 1

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

End Sub

Private Sub PicPrev_Click()

On Error Resume Next

RsNAV.MovePrevious

lblnav.Caption = Val(lblnav) - 1

If RsNAV.BOF = True Then

lblnav.Caption = Val(lblnav) + 1

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Call NAVData

End If

End Sub

Page 148: Hindustan Zinc Limited

Public Sub NAVData()

'Getting data from Sale

txtId.Text = Val(RsNAV(0))

Dtp1.Value = RsNAV(1)

'Getting Supplier Data

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT Accounts.AcId, Accounts.AcTitle, Sale_Detail.SaleId FROM Accounts INNER JOIN Sale_Detail ON Accounts.AcId = Sale_Detail.AcId where SaleId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

TxtAcCode.Text = Val(RS(0))

TxtName.Text = RS(1)

'Getting data from Sale_Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT * from ViewSale where SaleId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

Page 149: Hindustan Zinc Limited

End If

fgSale.Rows = 2

fgSale.Row = 1

For rCount = 1 To RS.RecordCount

fgSale.TextMatrix(fgSale.Row, 1) = RS(0) 'Prod Name

fgSale.TextMatrix(fgSale.Row, 2) = Val(RS(1)) 'Qty

fgSale.TextMatrix(fgSale.Row, 3) = Val(RS(2)) 'Price

fgSale.TextMatrix(fgSale.Row, 4) = Val(RS(1)) * Val(RS(2)) 'Amount

fgSale.TextMatrix(fgSale.Row, 5) = Val(RS(3)) 'Prod Code

fgSale.Rows = fgSale.Rows + 1

fgSale.Row = fgSale.Row + 1

RS.MoveNext

Next

Calculatetotal

End Sub

Public Sub AutoId()

'Calling MaxNumber function to get Auto Id for the record

MaxNumber "SaleId", "Max_Codes"

txtId.Text = Val(MaxNmbr)

End Sub

Page 150: Hindustan Zinc Limited

Public Sub Calculatetotal()

Dim mRow As Integer

txtTotal.Text = ""

For mRow = 1 To fgSale.Rows - 1

txtTotal.Text = Val(txtTotal) + Val(fgSale.TextMatrix(mRow, 4))

Next mRow

End Sub

Private Sub TxtAcCode_GotFocus()

TxtName.SetFocus

End Sub

Private Sub TxtName_GotFocus()

ObjectFoucs = True

End Sub

Private Sub TxtName_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 32 And Shift = 2 Then

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

FillGridAccounts

SetGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

Page 151: Hindustan Zinc Limited

MshSearch.SetFocus

End If

End Sub

Public Sub SetGridAccounts()

'Setting of Search Grid

With MshSearch

.ColWidth(1) = 2500

.ColWidth(2) = 1500

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

.RowHeight(0) = 400

.ColAlignmentFixed(0) = 4

.ColAlignmentFixed(1) = 4

.ColAlignmentFixed(2) = 4

End With

End Sub

Private Sub TxtName_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

fgSale.SetFocus

Page 152: Hindustan Zinc Limited

Else

KeyAscii = 0

Exit Sub

End If

End Sub

Public Sub CheckStock_n_Price()

'Checking Available Stock

'Opening Stock

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Qty from Product_Openings where ProdId = " & Val(fgSale.TextMatrix(fgSale.Row, 5)) & "", Con, adOpenStatic, adLockOptimistic

OpQty = Val(RS(0))

'Purchases

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty) from Purchase_Detail where ProdId = " & Val(fgSale.TextMatrix(fgSale.Row, 5)) & " GROUP By AcId", Con, adOpenStatic, adLockOptimistic

PurQty = Val(RS(0))

'Sales

Page 153: Hindustan Zinc Limited

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty) from Sale_Detail where ProdId = " & Val(fgSale.TextMatrix(fgSale.Row, 5)) & " Group By AcId", Con, adOpenStatic, adLockOptimistic

SaleQty = Val(RS(0))

'Stock

Stock = Val(OpQty) + Val(PurQty) - Val(SaleQty)

lblstock.Caption = "Available Stock : " & Val(Stock)

'Getting Product Price

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select SalePrice from Accounts where AcId = " & Val(fgSale.TextMatrix(fgSale.Row, 5)) & "", Con, adOpenStatic, adLockOptimistic

fgSale.TextMatrix(fgSale.Row, 3) = Val(RS(0))

End Sub

Public Sub FindRecord()

mSqlQry = "Select * from Sale_Main Where SaleId = " & Val(txtFindId) & ""

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

MsgBox "No sale found with this ID", vbCritical, "Message.."

txtFindId.SetFocus

Page 154: Hindustan Zinc Limited

Exit Sub

Else

ShowFoundData

End If

End Sub

Public Sub ShowFoundData()

'Getting data from Salechase

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT SaleId, SaleDate, TotalAmount from Sale_Main Where SaleId = " & Val(txtFindId) & "", Con, adOpenStatic, adLockOptimistic

If RS.EOF = True Then

Exit Sub

End If

txtId.Text = Val(RS(0))

Dtp1.Value = RS(1)

RS.Close

'Getting Supplier Data

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 155: Hindustan Zinc Limited

RS.Open "SELECT Accounts.AcId, Accounts.AcTitle, Sale_Detail.SaleId FROM Accounts INNER JOIN Sale_Detail ON Accounts.AcId = Sale_Detail.AcId where SaleId = " & Val(txtId) & "", Con, adOpenStatic, adLockOptimistic

TxtAcCode.Text = Val(RS(0))

TxtName.Text = RS(1)

'Getting data from Sale_Detail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT * from ViewSale where SaleId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgSale.Rows = 2

fgSale.Row = 1

For rCount = 1 To RS.RecordCount

fgSale.TextMatrix(fgSale.Row, 1) = RS(0) 'Prod Name

fgSale.TextMatrix(fgSale.Row, 2) = Val(RS(1)) 'Qty

fgSale.TextMatrix(fgSale.Row, 3) = Val(RS(2)) 'Price

fgSale.TextMatrix(fgSale.Row, 4) = Val(RS(1)) * Val(RS(2)) 'Amount

fgSale.TextMatrix(fgSale.Row, 5) = Val(RS(3)) 'Prod Code

Page 156: Hindustan Zinc Limited

fgSale.Rows = fgSale.Rows + 1

fgSale.Row = fgSale.Row + 1

RS.MoveNext

Next

picFind.Visible = False

Dtp1.SetFocus

End Sub

Public Sub MouseNormalOnLbl()

'Commands Lable

lbl(0).ForeColor = vbWhite

lbl(0).Font.Underline = False

lbl(1).ForeColor = vbWhite

lbl(1).Font.Underline = False

lbl(2).ForeColor = vbWhite

lbl(2).Font.Underline = False

lbl(3).ForeColor = vbWhite

lbl(3).Font.Underline = False

lbl(4).ForeColor = vbWhite

lbl(4).Font.Underline = False

Page 157: Hindustan Zinc Limited

lbl(5).ForeColor = vbWhite

lbl(5).Font.Underline = False

'Navigation Label

lblnav(0).ForeColor = vbWhite

lblnav(0).Font.Underline = False

lblnav(1).ForeColor = vbWhite

lblnav(1).Font.Underline = False

lblnav(2).ForeColor = vbWhite

lblnav(2).Font.Underline = False

lblnav(3).ForeColor = vbWhite

lblnav(3).Font.Underline = False

End Sub

Public Sub GetAvgCostUpdate()

'Getting Avg Price on Updating the existing task

Dim myRow As Integer

For myRow = 1 To fgSale.Rows - 2

Set RsMisc = New ADODB.Recordset

If RsMisc.State = 1 Then RsMisc.Close

RsMisc.Open "Select PurAvg,ProdId from Avg_Cost where ProdId = " & Val(fgSale.TextMatrix(myRow, 5)) & "", Con, adOpenStatic, adLockOptimistic

If IsNull(RsMisc(0)) Then

Page 158: Hindustan Zinc Limited

fgSale.TextMatrix(myRow, 6) = 0

Else

fgSale.TextMatrix(myRow, 6) = Val(RsMisc(0))

End If

Next

End Sub

6. frmTransaction.frm

This form creates the interface for the function of creating transaction entries, i.e. credit and debit.

Coding:

Dim Duplicate As Boolean

Dim RowSelect As Integer

Dim rCount As Integer

Dim mSqlQry As String

Dim TransactionId As Single

Dim TranMainCode As Single

Private Sub lbl_Click(Index As Integer)

Select Case Index

Case 0 'New

'Clearing all controls for New Data

Clear Me

fgTransaction.Clear

GridSetting

Page 159: Hindustan Zinc Limited

Call AutoId

Dtp1.SetFocus

Dtp1.Value = Now

Modes True, False, Me

'Lock Navigation

LockNav Me

Case 1 'Save

Dim FgTransactionRow As Integer

'Checking Data to Save

If Val(fgTransaction.Rows) < 3 Then

MsgBox "No data to save", vbInformation, "Message"

Exit Sub

End If

'Validation for Equal Balances of Debit and Credit Side

If Not Val(txtDebit) = Val(txtCredit) Then

MsgBox "Debit and Credit sides should be equal", vbCritical, "Message"

Exit Sub

End If

'If New Transaction

If lbl(0).Enabled = False Then

Page 160: Hindustan Zinc Limited

'Getting Maximum Code for Transaction Main

MaxNumber "TransId", "Max_Codes"

TranMainCode = Val(MaxNmbr)

TransactionRef = "Voucher-" & Val(txtId)

'Inserting Data to TransactionMain Table

Con.Execute "insert into Transaction_Main (TransId,TransDate,TransType,Posted,TransRef) values (" & Val(txtId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , '" & TransactionType & "' ,'" & "N" & "', '" & TransactionRef & "')"

'----------------------------- Inserting to Transaction Detail -----------------------------

For FgTransactionRow = 1 To fgTransaction.Rows - 2

'Getting Maximum Code for transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TransactionId = Val(MaxNmbr)

mdescript = fgTransaction.TextMatrix(FgTransactionRow, 2) + " V/No " & Val(txtId)

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TransactionId) & ", " & Val(txtId) & ", " & Val(fgTransaction.TextMatrix(FgTransactionRow, 5)) & ", '" & mdescript & "', " & Val(fgTransaction.TextMatrix(FgTransactionRow, 3)) & ", " & Val(fgTransaction.TextMatrix(FgTransactionRow, 4)) & ")"

'Updating MaxCode for Transaction Detail

Page 161: Hindustan Zinc Limited

UpdateMaxNumber "TransDetId", Val(TransactionId)

Next

'Updating Transaction Main Id

UpdateMaxNumber "TransId", Val(txtId)

MsgBox "Record saved", vbInformation, "Done"

lbl_Click (2)

Else

'If existing record

TranMainCode = Val(txtId)

'Deleting old records from TransactionMain and Transaction Detail

Con.Execute "Delete from Transaction_Detail where TranId = " & Val(txtId) & ""

Con.Execute "Delete from Transaction_Main where TransId = " & Val(txtId) & ""

'Checking Data to Save

If Val(fgTransaction.Rows) < 3 Then

MsgBox "No data to save", vbInformation, "Message"

Exit Sub

End If

'Validation for Equal Balances of Debit and Credit Side

If Not Val(txtDebit) = Val(txtCredit) Then

MsgBox "Debit and Credit sides should be equal", vbCritical, "Message"

Page 162: Hindustan Zinc Limited

Exit Sub

End If

'Inserting Data to TransactionMain Table

Con.Execute "insert into Transaction_Main (TransId,TransDate, TransType, Posted,TransRef) values (" & Val(txtId) & ", '" & Format(Dtp1.Value, "mm/dd/yyyy") & "' , '" & TransactionType & "' ,'" & "N" & "', '" & TransactionRef & "')"

'----------------------------- Inserting to Transaction Detail -----------------------------

For FgTransactionRow = 1 To fgTransaction.Rows - 2

'Getting Maximum Code for transaction_Detail

MaxNumber "TransDetId", "Max_Codes"

TransactionId = Val(MaxNmbr)

mdescript = fgTransaction.TextMatrix(FgTransactionRow, 2) + " V/No " & Val(txtId)

Con.Execute "Insert into Transaction_Detail (TranDetId, TranId, AcId, Descript, DrAmount, CrAmount) values (" & Val(TransactionId) & ", " & Val(txtId) & ", " & Val(fgTransaction.TextMatrix(FgTransactionRow, 5)) & ", '" & mdescript & "', " & Val(fgTransaction.TextMatrix(FgTransactionRow, 3)) & ", " & Val(fgTransaction.TextMatrix(FgTransactionRow, 4)) & ")"

'Updating MaxCode for Transaction Detail

UpdateMaxNumber "TransDetId", Val(TransactionId)

Next

MsgBox "Record updated", vbInformation, "Done"

lbl_Click (2)

Page 163: Hindustan Zinc Limited

End If

Case 2 'Cancel

Clear Me

'UnLock Navigation

UnLockNav Me

fgTransaction.Clear

GridSetting

Call ExistData

Modes False, True, Me

Dtp1.SetFocus

If RsNAV.RecordCount <= 0 Then

Exit Sub

Else

RsNAV.Requery

RsNAV.MoveFirst

End If

Page 164: Hindustan Zinc Limited

Case 3 'Delete

If MsgBox("Do you want to delete this Complete Voucher?", vbQuestion + vbYesNo, "Delete Voucher") = vbYes Then

If MsgBox("System will be unable to recover the loss data. Continue ?", vbQuestion + vbYesNo, "Delete Voucher") = vbYes Then

'Deleting data

Con.Execute "Delete from transaction_Detail where TranId = " & Val(txtId) & ""

Con.Execute "Delete from transaction_Main where TransId = " & Val(txtId) & ""

MsgBox "Voucher Deleted", vbInformation, "Message"

lbl_Click (2)

End If

End If

Case 4 'Find

picFind.Visible = True

optId.Value = 1

txtFindId.SetFocus

Case 5 'Exit

Unload Me

End Select

End Sub

Private Sub lblnav_Click(Index As Integer)

Page 165: Hindustan Zinc Limited

Select Case Index

Case 0 'Move First

On Error Resume Next

RsNAV.MoveFirst

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Exit Sub

Else

Call NAVData

End If

Case 1 'Move previous

On Error Resume Next

RsNAV.MovePrevious

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Call NAVData

End If

Case 2 'Move Next

On Error Resume Next

Page 166: Hindustan Zinc Limited

RsNAV.MoveNext

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

Case 3 'Move last

On Error Resume Next

RsNAV.MoveLast

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

End Select

End Sub

Page 167: Hindustan Zinc Limited

Private Sub lblnav_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3

MouseOver lblnav(Index)

End Select

End Sub

Private Sub Image_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Private Sub lbl_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)

Select Case Index

Case 0, 1, 2, 3, 4, 5

MouseOver lbl(Index)

End Select

End Sub

Private Sub cmdFind_Click()

If txtFindId.Text = "" Or Val(txtFindId) = 0 Then

MsgBox "Enter Transaction ID", vbCritical, "Message.."

txtFindId.SetFocus

txtFindId.Text = ""

Exit Sub

Page 168: Hindustan Zinc Limited

End If

Call FindRecord

End Sub

Private Sub cmdFindCancel_Click()

picFind.Visible = False

Dtp1.SetFocus

End Sub

Private Sub Dtp1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 13 Then

fgTransaction.SetFocus

End If

End Sub

Private Sub fgTransaction_Click()

RowSelect = fgTransaction.RowSel

End Sub

Private Sub fgTransaction_KeyDown(KeyCode As Integer, Shift As Integer)

'If CTRL + SPACE is pressed

If fgTransaction.Col = 1 Then

If KeyCode = 32 And Shift = 2 Then

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

Page 169: Hindustan Zinc Limited

FillGridAccounts

SetGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

End If

End If

'Delete Row from Grid

If KeyCode = vbKeyDelete Then

If fgTransaction.Rows > 2 And fgTransaction.TextMatrix(fgTransaction.Row, 1) <> "" Then

If MsgBox("Do you want to delete this line>", vbQuestion + vbYesNo, "Delete Line") = vbYes Then

txtDebit.Text = Val(txtDebit) - Val(fgTransaction.TextMatrix(fgTransaction.Row, 3))

txtCredit.Text = Val(txtCredit) - Val(fgTransaction.TextMatrix(fgTransaction.Row, 4))

fgTransaction.RemoveItem RowSelect

End If

Else

MsgBox "Blank or Last line can not be deleted", vbCritical, "Message "

Exit Sub

End If

Page 170: Hindustan Zinc Limited

End If

End Sub

Private Sub fgTransaction_KeyPress(KeyAscii As Integer)

EditGrid fgTransaction, KeyAscii

End Sub

Private Sub fgTransaction_LeaveCell()

'========================================= W O R K I N G ==============================

Dim RowNum As Integer

Dim mDebit As Single

Dim mCredit As Single

Select Case fgTransaction.Col

Case 1

txtDebit.Text = ""

txtCredit.Text = ""

For RowNum = 1 To fgTransaction.Rows - 1

mDebit = Val(mDebit) + Val(fgTransaction.TextMatrix(RowNum, 3))

mCredit = Val(mCredit) + Val(fgTransaction.TextMatrix(RowNum, 4))

Next

txtDebit.Text = mDebit

txtCredit.Text = mCredit

Page 171: Hindustan Zinc Limited

End Select

End Sub

Private Sub Form_Load()

'Setting up flexgrid data

Call GridSetting

'Calling Exist Data

Call ExistData

'Calling Data for navigation

Set RsNAV = New ADODB.Recordset

If RsNAV.State = 1 Then RsNAV.Close

RsNAV.Open "Select * from Transaction_Main Where TransType = '" & "Voucher" & "' Order By TransId", Con, adOpenStatic, adLockOptimistic

'Defining Transaction Type

TransactionType = "Voucher"

End Sub

Private Sub Form_Resize()

Me.Left = 3600

Me.Top = 1400

Page 172: Hindustan Zinc Limited

End Sub

Public Sub GridSetting()

'Setting of Transaction Grid

With fgTransaction

.ColWidth(0) = 250

.ColWidth(1) = 2500

.ColWidth(2) = 4400

.ColWidth(3) = 1475

.ColWidth(4) = 1475

.ColWidth(5) = 0

.ColWidth(6) = 0

.RowHeight(0) = 400

.Rows = 2

.TextMatrix(0, 1) = "Account Name"

.TextMatrix(0, 2) = "Description"

.TextMatrix(0, 3) = "Debit"

.TextMatrix(0, 4) = "Credit"

.ColAlignmentFixed(1) = 4

.ColAlignmentFixed(2) = 4

.ColAlignmentFixed(3) = 4

.ColAlignmentFixed(4) = 4

Page 173: Hindustan Zinc Limited

End With

End Sub

Public Sub SetGridAccounts()

'Setting of Search Grid

With MshSearch

.ColWidth(1) = 2500

.ColWidth(2) = 1500

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

.RowHeight(0) = 400

.ColAlignmentFixed(0) = 4

.ColAlignmentFixed(1) = 4

.ColAlignmentFixed(2) = 4

End With

End Sub

Public Sub FillGridAccounts()

'Filling all Accounts Data in Search grid

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise"

Page 174: Hindustan Zinc Limited

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

Set MshSearch.DataSource = RS

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

MouseNormalOnLbl

End Sub

Private Sub txtFindId_KeyPress(KeyAscii As Integer)

ONU KeyAscii, txtFindId

End Sub

Private Sub TxtGrdSrch_Change()

Call SearchRecord

End Sub

Public Sub SearchRecord()

'Filling the Search grid with Critarial Data

Dim SearchedRowCount As Integer

If PicSrchGrid.Visible = True Then

MshSearch.Rows = 2

Page 175: Hindustan Zinc Limited

MshSearch.Row = 0

SearchedRowCount = 0

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcTitle Like '" & TxtGrdSrch.Text & "%'"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

If RS.RecordCount <= 0 Then

MshSearch.Clear

With MshSearch

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

End With

MshSearch.Rows = 2

Exit Sub

End If

For SearchedRowCount = 1 To RS.RecordCount

If SearchedRowCount >= MshSearch.Rows - 1 Then

Page 176: Hindustan Zinc Limited

MshSearch.Rows = MshSearch.Rows + 1

MshSearch.Row = MshSearch.Row + 1

End If

MshSearch.TextMatrix(SearchedRowCount, 0) = RS(0)

MshSearch.TextMatrix(SearchedRowCount, 1) = RS(1)

MshSearch.TextMatrix(SearchedRowCount, 2) = RS(2)

RS.MoveNext

Next

MshSearch.Col = 0

MshSearch.Row = 0

MshSearch.ColAlignment(0) = 3

End If

End Sub

Private Sub MshSearch_DblClick()

If MshSearch.Row = 0 Then

Exit Sub

End If

'Checking for duplicate entry in grid

Call CheckDuplicate

If Duplicate = True Then

Page 177: Hindustan Zinc Limited

Exit Sub

End If

fgTransaction.TextMatrix(fgTransaction.Row, 1) = MshSearch.TextMatrix(MshSearch.Row, 1)

fgTransaction.TextMatrix(fgTransaction.Row, 5) = MshSearch.TextMatrix(MshSearch.Row, 0)

PicSrchGrid.Visible = False

fgTransaction.Col = 1

fgTransaction.SetFocus

End Sub

Public Sub CheckDuplicate()

Dim dRow As Integer

For dRow = 1 To fgTransaction.Rows - 2

If fgTransaction.TextMatrix(dRow, 5) = MshSearch.TextMatrix(MshSearch.Row, 0) Then

MsgBox "Account Title aleready selected", vbInformation, "Message"

Duplicate = True

Exit Sub

Else

Duplicate = False

End If

Next

End Sub

Page 178: Hindustan Zinc Limited

Private Sub MshSearch_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

MshSearch_DblClick

End If

If KeyAscii = 27 Then

PicSrchGrid.Visible = False

fgTransaction.SetFocus

Exit Sub

End If

If KeyAscii = 8 Then

If TxtGrdSrch.Text <> "" Then TxtGrdSrch.Text = Left$(TxtGrdSrch.Text, (Len(TxtGrdSrch.Text) - 1))

ElseIf KeyAscii = 13 Then

KeyAscii = 0

Else

TxtGrdSrch.Text = TxtGrdSrch.Text + Chr$(KeyAscii)

End If

End Sub

Private Sub TxtGrdSrch_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then

PicSrchGrid.Visible = False

fgTransaction.SetFocus

Exit Sub

End If

Page 179: Hindustan Zinc Limited

End Sub

Public Sub ExistData()

'Getting data from Purchase

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "SELECT TransId, TransDate, TransType from Transaction_Main Where TransType = '" & "Voucher" & "'", Con, adOpenStatic, adLockOptimistic

If RS.EOF = True Then

Exit Sub

End If

txtId.Text = Val(RS(0))

Dtp1.Value = RS(1)

RS.Close

'Getting data from TransactionDetail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT Accounts.AcTitle, Transaction_Detail.Descript, Transaction_Detail.DrAmount, Transaction_Detail.CrAmount, Accounts.AcId, Transaction_Detail.TranDetId, Transaction_Main.TransId" & _

" FROM Transaction_Main INNER JOIN (Accounts INNER JOIN Transaction_Detail ON Accounts.AcId = Transaction_Detail.AcId) ON Transaction_Main.TransId = Transaction_Detail.TranId" & _

" WHERE Transaction_Main.TransId = " & Val(txtId) & ""

Page 180: Hindustan Zinc Limited

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgTransaction.Rows = 2

fgTransaction.Row = 1

For rCount = 1 To RS.RecordCount

fgTransaction.TextMatrix(fgTransaction.Row, 1) = RS(0)

fgTransaction.TextMatrix(fgTransaction.Row, 2) = RS(1)

fgTransaction.TextMatrix(fgTransaction.Row, 3) = RS(2)

fgTransaction.TextMatrix(fgTransaction.Row, 4) = RS(3)

fgTransaction.TextMatrix(fgTransaction.Row, 5) = RS(4)

txtDebit.Text = Val(txtDebit) + Val(RS(2))

txtCredit.Text = Val(txtCredit) + Val(RS(3))

fgTransaction.Rows = fgTransaction.Rows + 1

fgTransaction.Row = fgTransaction.Row + 1

RS.MoveNext

Next

End Sub

Page 181: Hindustan Zinc Limited

Private Sub PicFirst_Click()

On Error Resume Next

RsNAV.MoveFirst

lblnav.Caption = "1"

If RsNAV.BOF = True Then

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Exit Sub

Else

Call NAVData

End If

End Sub

Private Sub PicLast_Click()

On Error Resume Next

RsNAV.MoveLast

lblnav.Caption = Val(RsNAV.RecordCount)

If RsNAV.EOF = True Then

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

End Sub

Page 182: Hindustan Zinc Limited

Private Sub PicNext_Click()

On Error Resume Next

RsNAV.MoveNext

lblnav.Caption = Val(lblnav) + 1

If RsNAV.EOF = True Then

lblnav.Caption = Val(lblnav) - 1

MsgBox "Last Record", vbInformation, "Message"

RsNAV.MoveLast

Else

Call NAVData

End If

End Sub

Private Sub PicPrev_Click()

On Error Resume Next

RsNAV.MovePrevious

lblnav.Caption = Val(lblnav) - 1

If RsNAV.BOF = True Then

lblnav.Caption = Val(lblnav) + 1

MsgBox "First Record", vbInformation, "Message"

RsNAV.MoveFirst

Else

Page 183: Hindustan Zinc Limited

Call NAVData

End If

End Sub

Public Sub NAVData()

'Getting data from Purchase

txtId.Text = Val(RsNAV(0))

Dtp1.Value = RsNAV(1)

'Getting data from TransactionDetail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT Accounts.AcTitle, Transaction_Detail.Descript, Transaction_Detail.DrAmount, Transaction_Detail.CrAmount, Accounts.AcId, Transaction_Detail.TranDetId, Transaction_Main.TransId" & _

" FROM Transaction_Main INNER JOIN (Accounts INNER JOIN Transaction_Detail ON Accounts.AcId = Transaction_Detail.AcId) ON Transaction_Main.TransId = Transaction_Detail.TranId" & _

" WHERE Transaction_Main.TransId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

Page 184: Hindustan Zinc Limited

fgTransaction.Rows = 2

fgTransaction.Row = 1

txtDebit.Text = ""

txtCredit.Text = ""

For rCount = 1 To RS.RecordCount

fgTransaction.TextMatrix(fgTransaction.Row, 1) = RS(0)

fgTransaction.TextMatrix(fgTransaction.Row, 2) = RS(1)

fgTransaction.TextMatrix(fgTransaction.Row, 3) = RS(2)

fgTransaction.TextMatrix(fgTransaction.Row, 4) = RS(3)

fgTransaction.TextMatrix(fgTransaction.Row, 5) = RS(4)

txtDebit.Text = Val(txtDebit) + Val(RS(2))

txtCredit.Text = Val(txtCredit) + Val(RS(3))

fgTransaction.Rows = fgTransaction.Rows + 1

fgTransaction.Row = fgTransaction.Row + 1

RS.MoveNext

Next

End Sub

Public Sub AutoId()

'Calling MaxNumber function to get Auto Id for the record

MaxNumber "TransId", "Max_Codes"

Page 185: Hindustan Zinc Limited

txtId.Text = Val(MaxNmbr)

End Sub

Public Sub FindRecord()

mSqlQry = "Select * from Transaction_Main Where TransType = '" & "Voucher" & "' and TransId = " & Val(txtFindId) & ""

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

MsgBox "No transaction found with this ID", vbCritical, "Message.."

txtFindId.SetFocus

Exit Sub

Else

ShowFoundData

End If

End Sub

Public Sub ShowFoundData()

'Getting data from TransactionMain

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from Transaction_Main Where TransType = '" & "Voucher" & "' and TransId = " & Val(txtFindId) & "", Con, adOpenStatic, adLockOptimistic

Page 186: Hindustan Zinc Limited

If RS.EOF = True Then

Exit Sub

End If

txtId.Text = Val(RS(0))

Dtp1.Value = RS(1)

RS.Close

'Getting data from TransactionDetail

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

mSqlQry = "SELECT Accounts.AcTitle, Transaction_Detail.Descript, Transaction_Detail.DrAmount, Transaction_Detail.CrAmount, Accounts.AcId, Transaction_Detail.TranDetId, Transaction_Main.TransId" & _

" FROM Transaction_Main INNER JOIN (Accounts INNER JOIN Transaction_Detail ON Accounts.AcId = Transaction_Detail.AcId) ON Transaction_Main.TransId = Transaction_Detail.TranId" & _

" WHERE Transaction_Main.TransId = " & Val(txtId) & ""

RS.Open mSqlQry, Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

fgTransaction.Rows = 2

fgTransaction.Row = 1

Page 187: Hindustan Zinc Limited

For rCount = 1 To RS.RecordCount

fgTransaction.TextMatrix(fgTransaction.Row, 1) = RS(0)

fgTransaction.TextMatrix(fgTransaction.Row, 2) = RS(1)

fgTransaction.TextMatrix(fgTransaction.Row, 3) = RS(2)

fgTransaction.TextMatrix(fgTransaction.Row, 4) = RS(3)

fgTransaction.TextMatrix(fgTransaction.Row, 5) = RS(4)

txtDebit.Text = Val(txtDebit) + Val(RS(2))

txtCredit.Text = Val(txtCredit) + Val(RS(3))

fgTransaction.Rows = fgTransaction.Rows + 1

fgTransaction.Row = fgTransaction.Row + 1

RS.MoveNext

Next

picFind.Visible = False

Dtp1.SetFocus

End Sub

Public Sub MouseNormalOnLbl()

'Commands Lable

lbl(0).ForeColor = vbWhite

lbl(0).Font.Underline = False

lbl(1).ForeColor = vbWhite

lbl(1).Font.Underline = False

Page 188: Hindustan Zinc Limited

lbl(2).ForeColor = vbWhite

lbl(2).Font.Underline = False

lbl(3).ForeColor = vbWhite

lbl(3).Font.Underline = False

lbl(4).ForeColor = vbWhite

lbl(4).Font.Underline = False

lbl(5).ForeColor = vbWhite

lbl(5).Font.Underline = False

'Navigation Label

lblnav(0).ForeColor = vbWhite

lblnav(0).Font.Underline = False

lblnav(1).ForeColor = vbWhite

lblnav(1).Font.Underline = False

lblnav(2).ForeColor = vbWhite

lblnav(2).Font.Underline = False

lblnav(3).ForeColor = vbWhite

lblnav(3).Font.Underline = False

End Sub

Page 189: Hindustan Zinc Limited

7. frmReport.frm

This form creates the interface for the generation of various reports of purchase, sales, accounts, stocks, income statement etc. depending upon the criterion of categorization and date chosen.

Coding:

Dim nodbb As Node

Dim VRun As String

'------------------------------

Dim RsLov As ADODB.Recordset

Dim a As Single 'Variable For Loop

Dim DrBal As Double 'Variable for Debit Balance

Dim CrBal As Double 'Variable for Credit Balance

Dim mDateQry As String 'Variable for storing BETWEEN DATES Query

Dim OpBal As Double 'Difference between Total DR and Total CR for Opening

Dim MaxId As Double 'Id for Ledger Report

Dim DtFrom As Date 'Date for COG (FROM)

Dim DtTo As Date 'Date for COG (TO)

'-------------------------------

Public Sub cmdExit_Click()

If PicSrchGrid.Visible = True Then

PicSrchGrid.Visible = False

Exit Sub

End If

On Error Resume Next

Unload Me

On Error Resume Next

End Sub

Page 190: Hindustan Zinc Limited

Private Sub CMDexit_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

CmdExit.Font.Bold = True

End Sub

Private Sub CMdexit_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'' Shape1(6).BackColor = &H568C73

End Sub

Private Sub CMDexit_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

CmdExit.Font.Bold = False

End Sub

Private Sub CmdLovCancel2_Click()

Select Case VRun

Case "Accounts Status"

TxtLookup1.SetFocus

Case "Daily Collection List"

TxtDate.SetFocus

End Select

PicSrchGrid.Visible = False

If RsLov.State = 1 Then RsLov.Close

End Sub

Private Sub CmdLovOK2_Click()

Select Case VRun

Case "Accounts Ledger"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Page 191: Hindustan Zinc Limited

Case "Account Wise Receipts"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

Case "Account Wise Payments"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

Case "Supplier Wise Purchase History"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Case "Product Wise Purchase History"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Case "Product Wise Sale History"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Case "Customer Wise Sale History"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

Page 192: Hindustan Zinc Limited

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Case "Month Wise Account Status"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

TxtLookup.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup.SetFocus

Case "Accounts Status"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode1.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup1.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Case "Receivable"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode1.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup1.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

Case "Payable"

If MshSearch.Rows <= 1 Then CmdLovCancel2_Click: Exit Sub

TxtLookupCode1.Text = MshSearch.TextMatrix(MshSearch.Row, 0)

TxtLookup1.Text = MshSearch.TextMatrix(MshSearch.Row, 1)

End Select

CmdLovCancel2_Click

End Sub

Page 193: Hindustan Zinc Limited

Private Sub CmdRun_Click()

If PicDateBw.Enabled = True Then

If TxtFrom.Value > TxtTo.Value Then

MsgBox "From Date value must be less than To Date value", vbInformation, "Date error"

TxtFrom.SetFocus

Exit Sub

End If

End If

DtFrom = TxtFrom.Value

DtTo = TxtTo.Value

mDateQry = " BETWEEN #" & DtFrom & "# And #" & DtTo & "#"

Select Case VRun

Case "Accounts Status"

If TxtLookupCode1.Text = "" Then

If TxtLookup.Text = "ALL" Then

StrQry = "Select AcId, AcTitle, AcType, Balance from ViewAccountStatus Where AcType NOT IN ('Product') order By AcId"

dataRepAccountStatus.Show vbModal

Page 194: Hindustan Zinc Limited

Else

StrQry = "Select AcId, AcTitle, AcType, Balance from ViewAccountStatus where AcType = '" & TxtLookup.Text & "' order By AcId"

dataRepAccountStatus.Show vbModal

End If

Else

StrQry = "Select AcId, AcTitle, AcType, Balance from ViewAccountStatus where AcType = '" & TxtLookup.Text & "' and AcId = " & Val(TxtLookupCode1) & " order By AcId"

dataRepAccountStatus.Show vbModal

End If

Case "Accounts Ledger"

Call AccLedger

Case "Stock Status"

Call ProductStock

Case "Reorder Status"

Call ReOrderStatus

Case "Products To Reorder"

Call ProductsToReorder

Page 195: Hindustan Zinc Limited

'' Case "Receivable"

'' If TxtLookupCode1.Text = "" Then

''

'' If TxtLookup.Text = "ALL" Then

'' StrQry = "Select Code,Remarks from Accounts order By code"

'' RepBalances.Sections("ReportHeader").Controls("LblRepType").Caption = "ALL BALANCE"

'' Else

'' StrQry = "Select Code,Remarks from Accounts where AccType = '" & TxtLookup.Text & "' order By code"

'' RepBalances.Sections("ReportHeader").Controls("LblRepType").Caption = UCase(TxtLookup.Text) & " BALANCE"

'' End If

''

'' Else

'' StrQry = "Select Code,Remarks from Accounts where AccType = '" & TxtLookup.Text & "' and Code = " & Val(TxtLookupCode1) & " order By code"

'' End If

''

'' Call BalanceRep

Case "Date Wise Purchase History"

Call PurchaseHistoryByDate

Case "Supplier Wise Purchase History"

Call PurchaseHistoryBySupplier

Case "Product Wise Purchase History"

Page 196: Hindustan Zinc Limited

Call PurchaseHistoryByProduct

Case "Date Wise Sale History"

Call DateWiseSaleHistory

Case "Customer Wise Sale History"

Call CustomerWiseSaleHistory

Case "Product Wise Sale History"

Call SaleHistoryByProduct

Case "Product Price List"

Call ProductPriceList

Case "Trial Balance"

Call TrialBalanceData

DataRepTrialBalance.Show vbModal

Case "Balance Sheet"

If TxtLookup.Text = "" Then

MsgBox "Select Month using Ctrl+Space", vbCritical, "Message"

TxtLookup.SetFocus

Exit Sub

End If

If TxtLookup1.Text = "" Then

MsgBox "Enter YEAR for Balance Sheet", vbCritical, "Message..."

Page 197: Hindustan Zinc Limited

TxtLookup1.SetFocus

Exit Sub

End If

Call MonthDates

'' Case "Stock Adjustment"

'' Call StockAdjustment

'' Case "Payable"

'' If TxtLookupCode1.Text = "" Then

''

'' If TxtLookup.Text = "ALL" Then

'' StrQry = "Select Code,Remarks from Accounts order By code"

'' RepBalances.Sections("ReportHeader").Controls("LblRepType").Caption = "ALL BALANCE"

'' Else

'' StrQry = "Select Code,Remarks from Accounts where AccType = '" & TxtLookup.Text & "' order By code"

'' RepBalances.Sections("ReportHeader").Controls("LblRepType").Caption = UCase(TxtLookup.Text) & " BALANCE"

'' End If

''

'' Else

'' StrQry = "Select Code,Remarks from Accounts where AccType = '" & TxtLookup.Text & "' and Code = " & Val(TxtLookupCode1) & " order By code"

'' End If

''

Page 198: Hindustan Zinc Limited

'' Call BalanceRep

''

'' Case "Cost Of Goods Sold"

''

'' If TxtLookup.Text = "" Then

'' MsgBox "Select Month using Ctrl+Space", vbCritical, "Message"

'' TxtLookup.SetFocus

'' Exit Sub

'' End If

''

'' If TxtLookup1.Text = "" Then

'' MsgBox "Enter YEAR for COG", vbCritical, "Message..."

'' TxtLookup1.SetFocus

'' Exit Sub

'' End If

''

'' Call MonthDates

Case "Income Statement"

Call IncomeStatData

'' Case "Date Wise Receipts"

'' If DeRep.rsCashReceipts.State = 1 Then DeRep.rsCashReceipts.Close

''

''

''

'' DeRep.CashReceipts TxtFrom.Value, TxtTo.Value

Page 199: Hindustan Zinc Limited

'' RepCashReceipts.Sections("ReportHeader").Controls("LblDate").Caption = "From : " & TxtFrom.Value & " " & "To : " & TxtTo.Value

'' Load RepCashReceipts

'' RepCashReceipts.Show 1

''

'' Case "Account Wise Receipts"

'' If DeRep.rsCashReceiptsByAccount.State = 1 Then DeRep.rsCashReceiptsByAccount.Close

''

''

''

'' DeRep.CashReceiptsByAccount TxtFrom.Value, TxtTo.Value, Val(TxtLookupCode)

'' RepCashReceiptsByAccount.Sections("ReportHeader").Controls("LblDate").Caption = "From : " & TxtFrom.Value & " " & "To : " & TxtTo.Value

'' Load RepCashReceiptsByAccount

'' RepCashReceiptsByAccount.Show 1

''

'' Case "Date Wise Payments"

'' If DeRep.rsCashPayment.State = 1 Then DeRep.rsCashPayment.Close

''

''

''

'' DeRep.CashPayment TxtFrom.Value, TxtTo.Value

'' RepCashPayments.Sections("ReportHeader").Controls("LblDate").Caption = "From : " & TxtFrom.Value & " " & "To : " & TxtTo.Value

'' Load RepCashPayments

'' RepCashPayments.Show 1

''

'' Case "Account Wise Payments"

Page 200: Hindustan Zinc Limited

'' If DeRep.rsCashPaymentByAccount.State = 1 Then DeRep.rsCashPaymentByAccount.Close

''

''

''

'' DeRep.CashPaymentByAccount TxtFrom.Value, TxtTo.Value, Val(TxtLookupCode)

'' RepCashReceiptsByAccount.Sections("ReportHeader").Controls("LblDate").Caption = "From : " & TxtFrom.Value & " " & "To : " & TxtTo.Value

'' Load RepCashPaymentByAccount

'' RepCashPaymentByAccount.Show 1

''

'' Case "Department Vehicles"

'' If DeRep.rsVehicleList.State = 1 Then DeRep.rsVehicleList.Close

''

''

''

'' DeRep.VehicleList Val(TxtLookupCode)

'' RepVehicles.Sections("Section4").Controls("LblDept").Caption = "Department : " & TxtLookup.Text

'' Load RepVehicles

'' RepVehicles.Show 1

''

'' Case "Issues"

'' If TxtLookup.Text = "" Then

'' MsgBox "Enter meter number", vbInformation, "Message"

'' TxtLookup.SetFocus

'' Exit Sub

'' End If

Page 201: Hindustan Zinc Limited

''

'' If Not IsNumeric(TxtLookup) Then

'' MsgBox "Enter digits only", vbInformation, "Message"

'' TxtLookup.SetFocus

'' Exit Sub

'' End If

''

'' If DeRep.rsMeterIssue.State = 1 Then DeRep.rsMeterIssue.Close

''

''

''

'' DeRep.MeterIssue TxtFrom.Value, TxtTo.Value, Val(TxtLookup)

'' RepMeterIssue.Sections("ReportHeader").Controls("LblDate").Caption = "From : " & TxtFrom.Value & " " & "To : " & TxtTo.Value

'' Load RepMeterIssue

'' RepMeterIssue.Show 1

''

'' Case "Reading"

'' If TxtLookup.Text = "" Then

'' MsgBox "Enter meter number", vbInformation, "Message"

'' TxtLookup.SetFocus

'' Exit Sub

'' End If

''

'' If Not IsNumeric(TxtLookup) Then

'' MsgBox "Enter digits only", vbInformation, "Message"

'' TxtLookup.SetFocus

'' Exit Sub

Page 202: Hindustan Zinc Limited

'' End If

''

'' If DeRep.rsMeterReading.State = 1 Then DeRep.rsMeterReading.Close

''

''

''

'' DeRep.MeterReading TxtFrom.Value, TxtTo.Value, Val(TxtLookup)

'' RepMeterReading.Sections("ReportHeader").Controls("LblDate").Caption = "From : " & TxtFrom.Value & " " & "To : " & TxtTo.Value

'' RepMeterReading.Sections("ReportHeader").Controls("LblMeterCode").Caption = "Meter Number : " & Val(TxtLookup)

''

'' Load RepMeterReading

'' RepMeterReading.Show 1

''

'' Case "Meter Stock"

'' Call MeterStock

'' If DeRep.rsMeterStock.State = 1 Then DeRep.rsMeterStock.Close

''

''

''

'' DeRep.MeterStock

'' DeRep.rsMeterStock.Requery

'' RepMeterStock.Sections("ReportHeader").Controls("LblDate").Caption = Format(Now, "dd/mmm/yyyy - HH:MM")

''

'' Load RepMeterStock

'' RepMeterStock.Show 1

''

Page 203: Hindustan Zinc Limited

'' Case "Code Wise Remaining"

'' If DeRep.rsReminderMain.State = 1 Then DeRep.rsReminderMain.Close

''

'' DeRep.ReminderMain TxtLookup.Text

'' Load RepReminderByCode

'' RepReminderByCode.Show 1

'' Call COGData

'' Call IncomeStatement

'' Call BalanceSheet

'' Load RepIncomeStatement

'' RepIncomeStatement.Show

End Select

End Sub

Private Sub CmdRun_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

CmdRun.Font.Bold = True

End Sub

Private Sub CmdRun_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'' Shape1(7).BackColor = &H568C73

End Sub

Private Sub CmdRun_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

CmdRun.Font.Bold = False

End Sub

Page 204: Hindustan Zinc Limited

Private Sub Command1_Click()

dataRepIncomeStat.Show vbModal

'''''Dim NetSale As Single

'''''Dim BegInv As Single

'''''Dim Purchase As Single

'''''Dim AvblForSale As Single

'''''Dim EndingInv As Single

'''''Dim COGSold As Single

'''''Dim Gross As Single

'''''Dim OtherIncome As Single

'''''Dim Expense As Single

'''''Dim NetProfit As Single

'''''

'''''Dim mDateQry As String

'''''

'''''

''''' NetSale = 0

''''' BegInv = 0

''''' Purchase = 0

''''' AvblForSale = 0

''''' EndingInv = 0

''''' COGSold = 0

''''' Gross = 0

''''' OtherIncome = 0

''''' Expense = 0

Page 205: Hindustan Zinc Limited

''''' NetProfit = 0

'''''

'''''

''''' mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

'''''

'''''

'''''' NET SALES OF THE DEFINED PERIOD

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "Select Sum(TotalAmount) from Sale_Main where SaleDate" & mDateQry, Con, adOpenStatic, adLockOptimistic

''''' If IsNull(RS(0)) Then

''''' NetSale = 0

''''' Else

''''' NetSale = Val(RS(0))

''''' End If

'''''

'''''' OPENING INVENTORY BEFORE DEFINED PERIOD

''''' Dim ProductOpenings As Single

''''' Dim OpQty As Single

''''' Dim OpAvgPrice As Single

''''' Dim BeforePeriod As String

''''' Dim PurValueBefore As Single

''''' Dim SalValueBefore As Single

'''''

''''' BeforePeriod = " < #" & FrmRep.TxtFrom.Value & "#"

'''''

''''' 'Value of Product Openings

Page 206: Hindustan Zinc Limited

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "Select Sum(Amount), Sum(Qty) from Product_Openings", Con, adOpenStatic, adLockOptimistic

''''' If IsNull(RS(0)) Then

''''' ProductOpenings = 0

''''' Else

''''' ProductOpenings = Val(RS(0))

''''' End If

'''''

''''' If IsNull(RS(1)) Then

''''' OpQty = 0

''''' Else

''''' OpQty = Val(RS(1))

''''' End If

'''''

''''' On Error Resume Next

''''' OpAvgPrice = Val(RS(0)) / Val(RS(1))

''''' On Error Resume Next

'''''

''''' 'Value of Purchase before given period

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "Select Sum(TotalAmount) from Purchase_Main where PurDate " & BeforePeriod, Con, adOpenStatic, adLockOptimistic

''''' If IsNull(RS(0)) Then

''''' PurValueBefore = 0

''''' Else

''''' PurValueBefore = Val(RS(0))

Page 207: Hindustan Zinc Limited

''''' End If

'''''

'''''

''''' 'Value of Sale before given period

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "Select Sum(TotalAmount) from Sale_Main where SaleDate " & BeforePeriod, Con, adOpenStatic, adLockOptimistic

''''' If IsNull(RS(0)) Then

''''' SalValueBefore = 0

''''' Else

''''' SalValueBefore = Val(RS(0))

''''' End If

'''''

'''''

''''' 'Calculating Begining Inventory

''''' BegInv = Val(ProductOpenings) + Val(PurValueBefore) - Val(SalValueBefore)

'''''

'''''

'''''' NET PURCHASES OF THE DEFINED PERIOD

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "Select Sum(TotalAmount) from Purchase_Main where PurDate" & mDateQry, Con, adOpenStatic, adLockOptimistic

''''' If IsNull(RS(0)) Then

''''' Purchase = 0

''''' Else

''''' Purchase = Val(RS(0))

''''' End If

Page 208: Hindustan Zinc Limited

'''''

'''''' CALCULATING VALUE OF GOODS AVAILABALE FOR SALE

''''' AvblForSale = Val(BegInv) + Val(Purchase)

'''''

'''''

'''''' ENDING INVENTORY OF DEFINED PERIOD

'''''

''''' Dim AfterPeriod As String

''''' Dim PurValueAfter As Single

''''' Dim SalValue As Single

''''' Dim AvgCost As Single

''''' Dim SaleQty As Single

'''''

''''' AfterPeriod = "#" & FrmRep.TxtTo.Value & "#"

'''''

''''' 'Value of Product Openings

''''' 'Taken from Variable PRODUCTOPENINGS

'''''

''''' 'Value of Purchase till Last Date

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "Select Sum(TotalAmount) from Purchase_Main where PurDate " & AfterPeriod, Con, adOpenStatic, adLockOptimistic

''''' If IsNull(RS(0)) Then

''''' PurValueAfter = 0

''''' Else

''''' PurValueAfter = Val(RS(0))

''''' End If

Page 209: Hindustan Zinc Limited

'''''

''''' 'Avg Purchase Cost till last date

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "SELECT Sum(Purchase_Detail.Qty) AS TotalQty, Purchase_Main.TotalAmount AS TotalAmount, TotalAmount/TotalQty AS Cost FROM Purchase_Detail INNER JOIN Purchase_Main ON Purchase_Detail.PurId = Purchase_Main.PurId GROUP BY Purchase_Main.TotalAmount, Purchase_Detail.Qty where Purchase_Main.PurDate " & AfterPeriod, Con, adOpenStatic, adLockOptimistic

''''' If Val(Cost) > 0 Then

''''' AvgCost = Val(Cost) + Val(OpAvgPrice) / 2

''''' Else

''''' AvgCost = Val(OpAvgPrice)

''''' End If

'''''

'''''

''''' 'Cost of Sale till Last Date

'''''

''''' Set RS = New ADODB.Recordset

''''' If RS.State = 1 Then RS.Close

''''' RS.Open "SELECT Sale_Main.SaleDate, Sum(Sale_Detail.Qty) AS SumOfQty FROM Sale_Main INNER JOIN Sale_Detail ON Sale_Main.SaleId = Sale_Detail.SaleId GROUP BY Sale_Main.SaleDate, Sale_Detail.Qty HAVING Sale_Main.SaleDate <= " & AfterPeriod, Con, adOpenStatic, adLockOptimistic

'''''

''''' If IsNull(RS(1)) Then

''''' SaleQty = 0

''''' Else

''''' SaleQty = Val(RS(1))

''''' SalValue = Val(AvgCost) * Val(SaleQty)

''''' End If

Page 210: Hindustan Zinc Limited

'''''

''''' 'Calculating Ending Inventory

''''' EndingInv = Val(ProductOpenings) + Val(PurValueAfter) - Val(SalValue)

''''' If Val(EndingInv) < 0 Then

''''' EndingInv = 0

''''' End If

'''''

'''''' COST OF GOODS SOLD

''''' COGSold = Val(AvblForSale) - Val(EndingInv)

'''''

'''''' GROSS PROFIT

''''' Gross = Val(NetSale) - Val(COGSold)

'''''

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 116 Then 'F5

CmdRun_Click

End If

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

If KeyAscii = 27 Then

cmdExit_Click

End If

End Sub

Page 211: Hindustan Zinc Limited

Private Sub Form_Load()

Me.Left = Me.Left

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

TxtDate.Day = Day(Date)

TxtDate.Month = Month(Date)

TxtDate.Year = Year(Date)

TxtFrom.Day = Day(Date)

TxtFrom.Month = Month(Date)

TxtFrom.Year = Year(Date)

TxtTo.Day = Day(Date)

TxtTo.Month = Month(Date)

TxtTo.Year = Year(Date)

Set nodbb = TV.Nodes.Add(, , "Root", "Reports", 3) 'Report

nodbb.Expanded = True

' ==============[PURCHASE]===============

TV.Nodes.Add "Root", tvwChild, "A", "Purchase", 6

Page 212: Hindustan Zinc Limited

TV.Nodes.Add "A", tvwChild, "A1", "Date Wise Purchase History", 1

TV.Nodes.Add "A", tvwChild, "A2", "Supplier Wise Purchase History", 1

TV.Nodes.Add "A", tvwChild, "A3", "Product Wise Purchase History", 1

TV.Nodes.Item("A").Bold = True

' ==============[SALES]===============

TV.Nodes.Add "Root", tvwChild, "B", "Sales", 6

TV.Nodes.Add "B", tvwChild, "B2", "Date Wise Sale History", 1

TV.Nodes.Add "B", tvwChild, "B3", "Customer Wise Sale History", 1

TV.Nodes.Add "B", tvwChild, "B4", "Product Wise Sale History", 1

TV.Nodes.Item("B").Bold = True

' ==============[ACCOUNTS]===============

TV.Nodes.Add "Root", tvwChild, "C", "Accounts", 6

TV.Nodes.Add "C", tvwChild, "C1", "Accounts Status", 1

TV.Nodes.Add "C", tvwChild, "C2", "Accounts Ledger", 1

TV.Nodes.Item("C").Bold = True

' ==============[STOCK]===============

TV.Nodes.Add "Root", tvwChild, "D", "Stock/Product Reports", 6

TV.Nodes.Add "D", tvwChild, "D1", "Stock Status", 1

TV.Nodes.Add "D", tvwChild, "D2", "Product Price List", 1

TV.Nodes.Add "D", tvwChild, "D3", "Reorder Status", 1

TV.Nodes.Add "D", tvwChild, "D4", "Products To Reorder", 1

TV.Nodes.Item("D").Bold = True

' ==============[FINANCIALS]===============

TV.Nodes.Add "Root", tvwChild, "E", "Financial Reports", 6

Page 213: Hindustan Zinc Limited

TV.Nodes.Add "E", tvwChild, "E1", "Trial Balance", 1

TV.Nodes.Add "E", tvwChild, "E2", "Income Statement", 1

TV.Nodes.Item("E").Bold = True

'Assigning values to LISTLOV

Call AccountType

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

'' Shape1(6).BackColor = &H96BEAE

'' Shape1(7).BackColor = &H96BEAE

End Sub

Private Sub MnuTitle_Click()

End Sub

Private Sub Form_Resize()

Me.Left = Me.Left + 1300

End Sub

Private Sub ListLov_Click()

TxtLookup.Text = ListLov.Text

ListLov.Visible = False

If VRun = "Accounts Status" Then

If TxtLookup.Text = "ALL" Then

Page 214: Hindustan Zinc Limited

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

Else

PicLookup1.Enabled = True

PicLookup1.BackColor = &HC0C0C0

TxtLookup1.SetFocus

End If

End If

End Sub

Private Sub ListLov_KeyPress(KeyAscii As Integer)

TxtLookup.Text = ListLov.Text

ListLov.Visible = False

If VRun = "Accounts Status" Then

If TxtLookup.Text = "ALL" Then

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

Else

PicLookup1.Enabled = True

PicLookup1.BackColor = &HC0C0C0

TxtLookup1.SetFocus

Page 215: Hindustan Zinc Limited

End If

End If

End Sub

Private Sub MshSearch_DblClick()

CmdLovOK2_Click

TxtLookup.SetFocus

End Sub

Private Sub MshSearch_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

CmdLovOK2_Click

TxtLookup.SetFocus

End If

If KeyAscii = 27 Then

CmdLovCancel2_Click

End If

If KeyAscii = 8 Then

If TxtGrdSrch.Text <> "" Then TxtGrdSrch.Text = Left$(TxtGrdSrch.Text, (Len(TxtGrdSrch.Text) - 1))

ElseIf KeyAscii = 13 Then

KeyAscii = 0

Else

TxtGrdSrch.Text = TxtGrdSrch.Text + Chr$(KeyAscii)

Page 216: Hindustan Zinc Limited

End If

End Sub

Private Sub TV_NodeClick(ByVal Node As MSComctlLib.Node)

'====================Purchase Report Start==========================

If Node = "Reports" Then

VRun = ""

TxtLookup = ""

TxtLookupCode = ""

TxtLookup1 = ""

TxtLookupCode1 = ""

TxtCode = ""

TxtToCode = ""

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup1.Enabled = False

PicLookup.BackColor = vbWhite

PicLookup1.BackColor = vbWhite

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

'-----------------------------------------------------------

Page 217: Hindustan Zinc Limited

'--------------Accounts Reports-------------------

ElseIf Node = "Accounts Status" Then

VRun = "Accounts Status"

ListLov.Clear

Call AccountType

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

TxtLookup.SetFocus

PicLookup1.Enabled = True

PicLookup1.BackColor = &HC0C0C0

ElseIf Node = "Trial Balance" Then

VRun = "Trial Balance"

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

Page 218: Hindustan Zinc Limited

PicCode.BackColor = vbWhite

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Receivable" Then

VRun = "Receivable"

ListLov.Clear

Call AccountType

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

PicLookup1.Enabled = True

PicLookup1.BackColor = &HC0C0C0

TxtLookup.SetFocus

ElseIf Node = "Payable" Then

VRun = "Payable"

ListLov.Clear

Call AccountType

PicDateBw.Enabled = False

PicCode.Enabled = False

Page 219: Hindustan Zinc Limited

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

PicLookup1.Enabled = True

PicLookup1.BackColor = &HC0C0C0

TxtLookup.SetFocus

ElseIf Node = "Accounts Ledger" Then

VRun = "Accounts Ledger"

ListLov.Clear

Call AccountType

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

ElseIf Node = "Income Statement" Then

VRun = "Income Statement"

Page 220: Hindustan Zinc Limited

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

TxtFrom.SetFocus

ElseIf Node = "Stock Status" Then

VRun = "Stock Status"

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Reorder Status" Then

Page 221: Hindustan Zinc Limited

VRun = "Reorder Status"

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Products To Reorder" Then

VRun = "Products To Reorder"

PicDateBw.Enabled = False

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = vbWhite

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

Page 222: Hindustan Zinc Limited

ElseIf Node = "Daily Cash Book" Then

VRun = "Daily Cash Book"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Date Wise Purchase History" Then

VRun = "Date Wise Purchase History"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

Page 223: Hindustan Zinc Limited

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Supplier Wise Purchase History" Then

VRun = "Supplier Wise Purchase History"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Product Wise Purchase History" Then

VRun = "Product Wise Purchase History"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

Page 224: Hindustan Zinc Limited

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Product Wise Sale History" Then

VRun = "Product Wise Sale History"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Sales Invoice" Then

VRun = "Sales Invoice"

PicDateBw.Enabled = False

PicCode.Enabled = True

PicDate.Enabled = False

Page 225: Hindustan Zinc Limited

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = vbWhite

PicCode.BackColor = &HC0C0C0

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

TxtCode.SetFocus

ElseIf Node = "Date Wise Sale History" Then

VRun = "Date Wise Sale History"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Customer Wise Sale History" Then

VRun = "Customer Wise Sale History"

PicDateBw.Enabled = True

Page 226: Hindustan Zinc Limited

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

ElseIf Node = "Vehicle Wise Sale History" Then

VRun = "Vehicle Wise Sale History"

PicDateBw.Enabled = True

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicDate.BackColor = vbWhite

PicDateBw.BackColor = &HC0C0C0

PicCode.BackColor = vbWhite

TxtFrom.SetFocus

PicLookup1.Enabled = False

PicLookup1.BackColor = vbWhite

Page 227: Hindustan Zinc Limited

ElseIf Node = "Product Price List" Then

VRun = "Product Price List"

PicDateBw.Enabled = False

PicDateBw.BackColor = vbWhite

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

ElseIf Node = "Stock Adjustment" Then

VRun = "Stock Adjustment"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

'RECEIPTS

Page 228: Hindustan Zinc Limited

ElseIf Node = "Date Wise Receipts" Then

VRun = "Date Wise Receipts"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

ElseIf Node = "Account Wise Receipts" Then

VRun = "Account Wise Receipts"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

Page 229: Hindustan Zinc Limited

'PAYMENTS

ElseIf Node = "Date Wise Payments" Then

VRun = "Date Wise Payments"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

ElseIf Node = "Account Wise Payments" Then

VRun = "Account Wise Payments"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

Page 230: Hindustan Zinc Limited

'VEHICLES

ElseIf Node = "Department Vehicles" Then

VRun = "Department Vehicles"

PicDateBw.Enabled = False

PicDateBw.BackColor = vbWhite

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtLookup.SetFocus

'METER

ElseIf Node = "Issues" Then

VRun = "Issues"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

Page 231: Hindustan Zinc Limited

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

ElseIf Node = "Reading" Then

VRun = "Reading"

PicDateBw.Enabled = True

PicDateBw.BackColor = &HC0C0C0

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtFrom.SetFocus

ElseIf Node = "Meter Stock" Then

VRun = "Meter Stock"

PicDateBw.Enabled = False

PicDateBw.BackColor = vbWhite

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = False

PicLookup.BackColor = vbWhite

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

Page 232: Hindustan Zinc Limited

PicDate.BackColor = vbWhite

ElseIf Node = "Code Wise Remaining" Then

VRun = "Code Wise Remaining"

PicDateBw.Enabled = False

PicDateBw.BackColor = vbWhite

PicCode.Enabled = False

PicDate.Enabled = False

PicLookup.Enabled = True

PicLookup.BackColor = &HC0C0C0

PicLookup1.BackColor = vbWhite

PicLookup1.Enabled = False

PicDate.BackColor = vbWhite

TxtLookup.SetFocus

End If

TxtLookup = ""

TxtLookupCode = ""

TxtLookup1 = ""

TxtLookupCode1 = ""

TxtCode = ""

TxtToCode = ""

Page 233: Hindustan Zinc Limited

End Sub

Private Sub TxtCode_GotFocus()

' SelectAll TxtLookup

End Sub

Private Sub TxtCode_KeyPress(KeyAscii As Integer)

Cng KeyAscii

End Sub

Private Sub TxtFrom_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 13 Then

TxtTo.SetFocus

End If

End Sub

Private Sub TxtGrdSrch_Change()

Call SearchRecord

End Sub

Private Sub TxtLookup_Change()

If TxtLookup.Text = "" Then

TxtLookupCode.Text = ""

End If

End Sub

Private Sub TxtLookup_GotFocus()

Page 234: Hindustan Zinc Limited

'' SelectAll TxtLookup

End Sub

Private Sub TxtLookup_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 32 And Shift = 2 Then

Select Case VRun

Case "Accounts Status"

ListLov.Clear

ListLov.Visible = True

ListLov.SetFocus

Call AccountType

Case "Accounts Ledger"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Case "Account Wise Receipts"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Case "Account Wise Payments"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Page 235: Hindustan Zinc Limited

Case "Department Vehicles"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Case "Receivable"

ListLov.Clear

ListLov.Visible = True

Call AccountType

Case "Payable"

ListLov.Clear

ListLov.Visible = True

Call AccountType

Case "Income Statement"

ListLov.Visible = True

Call MonthNames

ListLov.SetFocus

Case "Supplier Wise Purchase History"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Page 236: Hindustan Zinc Limited

Case "Product Wise Purchase History"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Case "Product Wise Sale History"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

Case "Customer Wise Sale History"

PicSrchGrid.Visible = True

TxtGrdSrch.Text = ""

ListLov.Clear

Call AccountsData

End Select

End If

End Sub

''Public Sub StockStatus()

''

''

'' Connect.Cn.Execute "delete from RepStockStat"

Page 237: Hindustan Zinc Limited

'' DataEnvironment2.ProductsStatus Val(TxtLookupCode)

'' For a = 1 To DataEnvironment2.rsProductsStatus.RecordCount

'' If RsDTrans.State = 1 Then RsDTrans.Close

'' RsDTrans.Open "Select sum(purchasedetail.qtys)from purchasedetail inner join purchaseheader on purchasedetail.purcode=purchaseheader.purcode where productCode= " & Val(DataEnvironment2.rsProductsStatus("ProductCode")) & " and purchaseheader.purdate< '" & Format(TxtFrom.Value, "DD-MMM-YY") & " 00:00:00.000'", Connect.Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsDTrans(0)) = False Then

'' DrSum = RsDTrans(0)

'' Else

'' DrSum = 0

'' End If

'' RsDTrans.Close

'' If RsDTrans.State = 1 Then RsDTrans.Close

'' RsDTrans.Open "Select sum(salesdetail.qty)from salesdetail inner join salesheader on salesdetail.salcode=salesheader.salcode where productCode= " & Val(DataEnvironment2.rsProductsStatus("ProductCode")) & " and salesheader.saldate< '" & Format(TxtFrom.Value, "DD-MMM-YY") & " 00:00:00.000'", Connect.Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsDTrans(0)) = False Then

'' CrSum = RsDTrans(0)

'' Else

'' CrSum = 0

'' End If

'' RsDTrans.Close

'' OpBal = DrSum - CrSum

'' RsDTrans.Open "Select sum(purchasedetail.qtys),sum(purchasedetail.bonus) from purchasedetail inner join purchaseheader on purchasedetail.purcode=purchaseheader.purcode where purchasedetail.productCode= " & Val(DataEnvironment2.rsProductsStatus("ProductCode")) & " and purchaseheader.purdate between '" & Format(TxtFrom.Value, "DD-MMM-YY") & " 00:00:00.000'" & " And '" & Format(TxtTo.Value, "DD-MMM-YY") & " 00:00:00.000'", Connect.Cn, adOpenStatic, adLockReadOnly

Page 238: Hindustan Zinc Limited

'' If IsNull(RsDTrans(0)) = False Then

'' Rec = RsDTrans(0)

'' TBonus = RsDTrans(1)

'' Else

'' Rec = 0

'' TBonus = 0

'' End If

'' RsDTrans.Close

'' RsDTrans.Open "Select sum(salesdetail.qty)from salesdetail inner join salesheader on salesdetail.salcode=salesheader.salcode where salesdetail.productCode= " & Val(DataEnvironment2.rsProductsStatus("ProductCode")) & " and salesheader.saldate between '" & Format(TxtFrom.Value, "DD-MMM-YY") & " 00:00:00.000'" & " And '" & Format(TxtTo.Value, "DD-MMM-YY") & " 00:00:00.000'", Connect.Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsDTrans(0)) = False Then

'' TSale = RsDTrans(0)

'' Else

'' TSale = 0

'' End If

'' RsDTrans.Close

'' If RsDTrans.State = 1 Then RsDTrans.Close

'' RsDTrans.Open "Select sum(salesdetail.qty)from salesdetail inner join salesheader on salesdetail.salcode=salesheader.salcode where productCode= " & Val(DataEnvironment2.rsProductsStatus("ProductCode")) & " and salesheader.saldate= '" & Format(TxtTo.Value, "DD-MMM-YY") & " 00:00:00.000'", Connect.Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsDTrans(0)) = False Then

'' DSale = RsDTrans(0)

'' Else

'' DSale = 0

'' End If

'' RsDTrans.Close

Page 239: Hindustan Zinc Limited

'' '**************** insert into RepStockStat

'' VSQL = "INSERT INTO RepStockStat VALUES ("

'' VSQL = VSQL & a & ",'" & DataEnvironment2.rsProductsStatus("ProductName")

'' VSQL = VSQL & "','" & DataEnvironment2.rsProductsStatus("Packing")

'' VSQL = VSQL & "'," & DataEnvironment2.rsProductsStatus("PrincipalCode")

'' VSQL = VSQL & "," & DataEnvironment2.rsProductsStatus("Rate")

'' VSQL = VSQL & "," & OpBal

'' VSQL = VSQL & "," & Rec

'' VSQL = VSQL & "," & OpBal + Rec

'' VSQL = VSQL & "," & DSale

'' VSQL = VSQL & "," & TSale

'' VSQL = VSQL & "," & TSale * DataEnvironment2.rsProductsStatus("Rate")

'' VSQL = VSQL & "," & DataEnvironment2.rsProductsStatus("Claim")

'' VSQL = VSQL & "," & DataEnvironment2.rsProductsStatus("Bonus")

'' VSQL = VSQL & "," & DataEnvironment2.rsProductsStatus("CurBal")

'' VSQL = VSQL & "," & DataEnvironment2.rsProductsStatus("TotalAmount")

'' VSQL = VSQL & ",'" & TxtTo.Value

'' VSQL = VSQL & "'," & TBonus & ")"

'' Cn.Execute VSQL

''' MsgBox DataEnvironment2.rsProductsStatus(1) & ", " & OpBal

'' DataEnvironment2.rsProductsStatus.MoveNext

'' Next

'' DataEnvironment2.rsProductsStatus.Close

''End Sub

Private Sub TxtLookup_KeyPress(KeyAscii As Integer)

'' MMisFuncion.SpaceNotAllow KeyAscii, TxtLookup

End Sub

Page 240: Hindustan Zinc Limited

Private Sub TxtLookup_LostFocus()

If TxtLookup.Text = "ALL" Then

TxtLookup1.Text = ""

End If

End Sub

Private Sub TxtLookup1_Change()

If TxtLookup1.Text = "" Then

TxtLookupCode1.Text = ""

End If

End Sub

Private Sub TxtLookup1_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 32 And Shift = 2 Then

Select Case VRun

Case "Accounts Status"

PicSrchGrid.Visible = True

Call AccountsData

MshSearch.SetFocus

End Select

End If

End Sub

Private Sub TxtLookup1_KeyPress(KeyAscii As Integer)

If KeyAscii = 32 Then

Page 241: Hindustan Zinc Limited

KeyAscii = 0

End If

End Sub

Private Sub TxtTo_KeyDown(KeyCode As Integer, Shift As Integer)

On Error Resume Next

If KeyCode = 13 Then

TxtLookup.SetFocus

On Error Resume Next

End If

End Sub

Private Sub TxttoCode_GotFocus()

' SelectAll TxtLookup

End Sub

Public Sub BalanceRep() 'FAROOQ

''''''Deleting old records

'''''

''''' Set RsLov = New ADODB.Recordset

''''' If RsLov.State = 1 Then RsLov.Close

''''' RsLov.Open "Delete * from TblRep", Db, adOpenStatic, adLockOptimistic

'''''

''''' Db.Execute "Delete from TblRep"

'''''

''''' RepBalances.Refresh

'''''

Page 242: Hindustan Zinc Limited

''''''Opening Accounts Table

''''' Set RsAcc = New ADODB.Recordset

''''' If RsAcc.State = 1 Then RsAcc.Close

''''' RsAcc.Open StrQry, Db, adOpenStatic, adLockPessimistic

''''' Dim Vc1 As Single

''''' For Vc1 = 1 To RsAcc.RecordCount

'''''

''''''Opening record set for Debit Transactions

''''' Set RsDrt = New ADODB.Recordset

''''' If RsDrt.State = 1 Then RsDrt.Close

''''' RsDrt.Open "Select Sum(Amount) from DRTGLT where AccountCode = " & RsAcc.Fields("Code"), Db, adOpenStatic, adLockPessimistic

''''' If IsNull(RsDrt(0)) Then

''''' DrBal = 0

''''' Else

''''' DrBal = Val(RsDrt(0))

''''' End If

'''''

''''''Opening record set for Credit Transactions

''''' Set RsCrt = New ADODB.Recordset

''''' If RsCrt.State = 1 Then RsCrt.Close

''''' RsCrt.Open "Select Sum(Amount) from CRTGLT where AccountCode = " & RsAcc.Fields("Code"), Db, adOpenStatic, adLockPessimistic

''''' If IsNull(RsCrt(0)) Then

''''' CrBal = 0

''''' Else

''''' CrBal = Val(RsCrt(0))

''''' End If

'''''

Page 243: Hindustan Zinc Limited

'''''

''''''Generating Difference between Total Debit and Total Credit

''''' Dim VBal As Double

''''' VBal = Val(DrBal) - Val(CrBal)

'''''

''''''Inserting data into TblRep

''''' Db.Execute "INSERT INTO TblRep (Code, Descrip, TotalDr, TotalCr, Balance, DrCr) VALUES (" & Val(RsAcc("Code")) & ", '" & RsAcc("Name") & "', " & Val(DrBal) & ", " & Val(CrBal) & ", " & Val(VBal) & ", '" & "-" & "' )"

'''''

'''''''''Updating Record to know that is the balacne DR or CR

'''''''' If Val(VBal) > 0 Then

'''''''' Db.Execute "UPDATE TblRep SET DrCr = '" & "Dr" & "' WHERE TotalDr > 0"

'''''''' ElseIf Val(VBal) < 0 Then

'''''''' Db.Execute "UPDATE TblRep SET DrCr = '" & "Cr" & "' WHERE TotalCr > 0"

'''''''' Else

'''''''' Db.Execute "UPDATE TblRep SET DrCr = '" & "--" & "' WHERE BALANCE = 0"

'''''''' End If

'''''

''''' DrBal = 0

''''' CrBal = 0

''''' VBal = 0

'''''

'''''

''''' RsAcc.MoveNext

''''' Next

'''''

''''' On Error Resume Next

'''''

Page 244: Hindustan Zinc Limited

''''' If DeRep.rsBalances.State = 1 Then DeRep.rsBalances.Close

'''''

'''''

''''' DeRep.Balances

'''''

''''''' DeRep.rsBalances.Requery

'''''

''''' On Error Resume Next

End Sub

Public Sub AccountType()

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "SELECT DISTINCT AcType FROM Accounts Where AcType not in ('Product')", Con, adOpenStatic, adLockReadOnly

For a = 1 To RsLov.RecordCount

ListLov.AddItem RsLov(0)

RsLov.MoveNext

Next

ListLov.AddItem "ALL"

End Sub

''Public Sub TBal()

'''Deleting old records

'' Cn.Execute "Delete from TblTrial"

''

'''Opening Accounts Table

Page 245: Hindustan Zinc Limited

'' Set RsAcc = New ADODB.Recordset

'' If RsAcc.State = 1 Then RsAcc.Close

'' RsAcc.Open "Select Code,Remarks from Accounts", Cn, adOpenStatic, adLockPessimistic

''

'' Dim Vc1 As Single

'' For Vc1 = 1 To RsAcc.RecordCount

''

'''Opening record set for Debit Transactions

'' Set RsDrt = New ADODB.Recordset

'' If RsDrt.State = 1 Then RsDrt.Close

'' RsDrt.Open "Select Sum(Amount) from DRt where AccountCode = " & RsAcc.Fields("Code"), Cn, adOpenStatic, adLockPessimistic

'' If IsNull(RsDrt(0)) Then

'' DrBal = 0

'' Else

'' DrBal = RsDrt(0)

'' End If

''

'''Opening record set for Credit Transactions

'' Set RsCrt = New ADODB.Recordset

'' If RsCrt.State = 1 Then RsCrt.Close

'' RsCrt.Open "Select Sum(Amount) from CRt where AccountCode = " & RsAcc.Fields("Code"), Cn, adOpenStatic, adLockPessimistic

'' If IsNull(RsCrt(0)) Then

'' CrBal = 0

'' Else

'' CrBal = RsCrt(0)

'' End If

Page 246: Hindustan Zinc Limited

''

''

'''Generating Difference between Total Debit and Total Credit for each account

'' Dim VBal As Double

'' VBal = Val(DrBal) - Val(CrBal)

''

'' Cn.Execute "INSERT INTO TblTrial (Code, Descrip, Debit, Credit,Id) VALUES (" & Val(RsAcc("Code")) & ", '" & RsAcc("Remarks") & "',0,0, " & Val(Vc1) & ")"

''

'''Updating Record to know that is the balacne DR or CR

'' If Val(VBal) > 0 Then

'' Cn.Execute "UPDATE TblTrial SET Debit = " & Val(VBal) & " where Id = " & Val(Vc1) & ""

'' ElseIf Val(VBal) < 0 Then

'' Cn.Execute "UPDATE TblTrial SET Credit = " & Abs(Val(VBal)) & " where Id = " & Val(Vc1) & ""

'' End If

''

'' VBal = 0

'' RsAcc.MoveNext

'' Next

''

'''Getting the difference between Total Debit and Total Credit

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

'' RsLov.Open "Select sum(Debit),sum(Credit) from TblTrial", Cn, adOpenStatic, adLockReadOnly

'' VBal = Val(RsLov(0)) - Val(RsLov(1))

'' If Val(VBal) > 0 Then

Page 247: Hindustan Zinc Limited

'' RepTrial.Sections("Section5").Controls("LblDif").Caption = "Dr. Diff: " & Format(Val(VBal), "##,#.00")

'' ElseIf Val(VBal) < 0 Then

'' RepTrial.Sections("Section5").Controls("LblDif").Caption = "Cr. Diff: " & Format(Val(VBal), "##,#.00")

'' Else

'' RepTrial.Sections("Section5").Controls("LblDif").Caption = Format(0, "##,#.00")

'' End If

''

'''Showing Report

'' If De1.rsRepTrial.State = 1 Then De1.rsRepTrial.Close

'' RepTrial.Refresh

'' Load RepTrial

'' RepTrial.Show 1

''End Sub

Public Sub AccountsData()

Select Case VRun

Case "Accounts Status"

SetSearchGrid

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Accounts Ledger"

SetSearchGrid

Page 248: Hindustan Zinc Limited

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Account Wise Receipts"

SetSearchGrid

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Account Wise Payments"

SetSearchGrid

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Supplier Wise Purchase History"

SetSearchGrid

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Product Wise Purchase History"

SetSearchGrid

Page 249: Hindustan Zinc Limited

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Customer Wise Sale History"

SetSearchGrid

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Product Wise Sale History"

SetSearchGrid

FillGridAccounts

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

Case "Month Wise Account Status"

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "SELECT Code,Name FROM Accounts ORDER BY Remarks", Con, adOpenStatic, adLockReadOnly

Set MshSearch.DataSource = RsLov

MshSearch.ColWidth(0) = 1000

MshSearch.ColWidth(1) = 4000

Page 250: Hindustan Zinc Limited

MshSearch.SetFocus

Case "Receivable"

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Code,Name from Accounts Where AccType = '" & ListLov & "' order By Remarks", Con, adOpenStatic, adLockReadOnly

Set MshSearch.DataSource = RsLov

PicSrchGrid.Visible = True

MshSearch.ColWidth(0) = 1000

MshSearch.ColWidth(1) = 4000

MshSearch.SetFocus

Case "Payable"

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Code,Name from Accounts Where AccType = '" & ListLov & "' order By Remarks", Con, adOpenStatic, adLockReadOnly

Set MshSearch.DataSource = RsLov

PicSrchGrid.Visible = True

MshSearch.ColWidth(0) = 1000

MshSearch.ColWidth(1) = 4000

MshSearch.SetFocus

End Select

End Sub

Public Sub AccLedger()

Page 251: Hindustan Zinc Limited

Dim DtFrom As Date

Dim DtTo As Date

Dim mBalance As Single

Dim DrOpBal As Single

Dim CrOpBal As Single

Dim DrCr As String

Dim RunningBal As Double

DtFrom = TxtFrom.Value

DtTo = TxtTo.Value

mDateQry = " BETWEEN #" & DtFrom & "# And #" & DtTo & "#"

'Delete Data from RepAcLedger

Con.Execute "Delete * from RepAcLedger"

'Getting Opening Balance for the selected Account

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(DrAmount),Sum(CrAmount) from ViewAccountLedger where TransDate < #" & DtFrom & "# and AcID = " & Val(TxtLookupCode) & "", Con, adOpenStatic, adLockOptimistic

'If result is NULL

If IsNull(RS(0)) Or IsNull(RS(1)) Then

mBalance = 0

Else

mBalance = Val(RS(0)) - Val(RS(1))

End If

Page 252: Hindustan Zinc Limited

'Finding DR/CR/Nill balance

If Val(mBalance) > 0 Then

DrOpBal = Val(mBalance)

CrOpBal = 0

DrCr = "DR"

ElseIf Val(mBalance) < 0 Then

CrOpBal = Abs(Val(mBalance))

DrOpBal = 0

DrCr = "CR"

Else

DrOpBal = 0

CrOpBal = 0

DrCr = "NILL"

End If

'Saving Opening Balance in REPACLEDGER

Con.Execute "Insert into RepAcLedger Values( " & Val(TxtLookupCode) & ", '" & Format(DtFrom - 1, "dd/mm/yyyy") & "', '" & "Last Balance (C/F)" & "', " & Val(DrOpBal) & ", " & Val(CrOpBal) & ", " & Abs(Val(mBalance)) & ", '" & DrCr & "') "

'Fetching Data into RepAcLedger

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewAccountLedger where AcId = " & Val(TxtLookupCode) & " and TransDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

RS.Requery

While Not RS.EOF = True

RunningBal = Val(mBalance) + Val(RS(4)) - Val(RS(5))

Page 253: Hindustan Zinc Limited

mBalance = RunningBal

'Finding DR/CR/Nill balance

If Val(RunningBal) > 0 Then

DrCr = "DR"

ElseIf Val(RunningBal) < 0 Then

DrCr = "CR"

Else

DrCr = "NILL"

End If

' AcID Date Desc DR CR balance drcr

Con.Execute "Insert into RepAcLedger Values( " & Val(RS(0)) & ", '" & Format(RS(2), "dd/mm/yyyy") & "', '" & RS(3) & "', " & Val(RS(4)) & ", " & Val(RS(5)) & ", " & Val(RunningBal) & ", '" & DrCr & "') "

RS.MoveNext

Wend

daraRepAcLedger.Show vbModal

End Sub

Public Sub MonthNames()

'List of Months for LOV

ListLov.Clear

ListLov.AddItem "January"

ListLov.AddItem "February"

Page 254: Hindustan Zinc Limited

ListLov.AddItem "March"

ListLov.AddItem "April"

ListLov.AddItem "May"

ListLov.AddItem "June"

ListLov.AddItem "July"

ListLov.AddItem "August"

ListLov.AddItem "September"

ListLov.AddItem "October"

ListLov.AddItem "November"

ListLov.AddItem "December"

End Sub

Public Sub MonthDates()

'Days of Monthts for Calcutaing COG

If TxtLookup.Text = "January" Then

DtFrom = "01-Jan-" & TxtLookup1.Text

DtTo = "31-Jan-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "February" Then

DtFrom = "01-Feb-" & TxtLookup1.Text

DtTo = "28-Feb-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "March" Then

DtFrom = "01-Mar-" & TxtLookup1.Text

DtTo = "31-Mar-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "April" Then

DtFrom = "01-Apr-" & TxtLookup1.Text

Page 255: Hindustan Zinc Limited

DtTo = "30-Apr-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "May" Then

DtFrom = "01-May-" & TxtLookup1.Text

DtTo = "31-May-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "June" Then

DtFrom = "01-Jun-" & TxtLookup1.Text

DtTo = "30-Jun-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "July" Then

DtFrom = "01-Jul-" & TxtLookup1.Text

DtTo = "31-Jul-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "August" Then

DtFrom = "01-Aug-" & TxtLookup1.Text

DtTo = "31-Aug-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "September" Then

DtFrom = "01-Sep-" & TxtLookup1.Text

DtTo = "30-Sep-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "October" Then

DtFrom = "01-Oct-" & TxtLookup1.Text

DtTo = "31-Oct-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "November" Then

DtFrom = "01-Nov-" & TxtLookup1.Text

Page 256: Hindustan Zinc Limited

DtTo = "30-Nov-" & TxtLookup1.Text

ElseIf TxtLookup.Text = "December" Then

DtFrom = "01-Dec-" & TxtLookup1.Text

DtTo = "31-Dec-" & TxtLookup1.Text

End If

End Sub

''Public Sub IncomeStatement()

'' TxtFrom.Value = DtFrom

'' TxtTo.Value = DtTo

''

'' MDateQry = " BETWEEN '" & TxtFrom.Value & "' And '" & TxtTo.Value & "'"

''

''

'''Sales during the given period

'' Dim mTotalSales As Double

''

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

'' RsLov.Open "SELECT SUM(SaleDetail.TotalAmount) FROM Sale INNER JOIN SaleDetail ON Sale.Code = SaleDetail.Code INNER JOIN Product ON SaleDetail.ProductCode = Product.Code WHERE Product.Type IN ('Billets/Ingots') and Sale.TDate" & MDateQry, Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsLov(0)) Then

'' mTotalSales = 0

Page 257: Hindustan Zinc Limited

'' Else

'' mTotalSales = Val(RsLov(0))

'' End If

''

'' RepIncomeStatement.Sections("Section2").Controls("LblTotalSale").Caption = Val(mTotalSales)

''

'''Sales Return during the period

'' Dim mSaleRet As Double

''

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

'' RsLov.Open "SELECT SUM(SaleDetailR.TotalAmount)FROM SaleR INNER JOIN SaleDetailR ON SaleR.Code = SaleDetailR.Code INNER JOIN Product ON SaleDetailR.ProductCode = Product.Code WHERE Product.Type IN ('Billets/Ingots') and SaleR.TDate" & MDateQry, Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsLov(0)) Then

'' mSaleRet = 0

'' Else

'' mSaleRet = Val(RsLov(0))

'' End If

''

'' RepIncomeStatement.Sections("Section2").Controls("LblSaleRet").Caption = Val(mSaleRet)

''

'''Sales Discounts during the period

'' Dim mSaleDiscount As Double

''

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

Page 258: Hindustan Zinc Limited

'' RsLov.Open "SELECT SUM(Drt.Amount) FROM GLT INNER JOIN DRT ON GLT.Code = DRT.Code INNER JOIN Accounts ON DRT.AccountCode = Accounts.Code WHERE (Accounts.AccType IN ('Discount Allowed')) and Glt.Tdate" & MDateQry, Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsLov(0)) Then

'' mSaleDiscount = 0

'' Else

'' mSaleDiscount = Val(RsLov(0))

'' End If

''

'' RepIncomeStatement.Sections("Section2").Controls("LblDiscount").Caption = Val(mSaleDiscount)

''

'''Calculating NetSales

'' Dim mNetSale As Double

''

'' mNetSale = Val(mTotalSales) - Val(mSaleRet) + Val(mSaleDiscount)

'' RepIncomeStatement.Sections("Section2").Controls("LblNetSale").Caption = Val(mNetSale)

''

'''Gross Profit

'' Dim mGrossProfit As Double

'' mGrossProfit = Val(mNetSale) - Val(mCOG)

'' RepIncomeStatement.Sections("Section2").Controls("LblGross").Caption = Val(mGrossProfit)

''

''

'''Operating Expense Report

''

Page 259: Hindustan Zinc Limited

'' StrQry = "SELECT Code, Remarks FROM Accounts WHERE AccType IN ('Opeating Expense') AND AccType NOT LIKE '%Tax%'"

''

'''========================Copying Data to TblRep===========================

''

'''Deleting old records

'' Cn.Execute "Delete from TblRep"

'' RepBalances.Refresh

''

'''Opening Accounts Table

'' Set RsAcc = New ADODB.Recordset

'' If RsAcc.State = 1 Then RsAcc.Close

'' RsAcc.Open StrQry, Cn, adOpenStatic, adLockPessimistic

'' Dim Vc1 As Single

'' For Vc1 = 1 To RsAcc.RecordCount

''

'''Opening record set for Debit Transactions

'' Set RsDrt = New ADODB.Recordset

'' If RsDrt.State = 1 Then RsDrt.Close

'' RsDrt.Open "SELECT SUM(DRT.Amount) FROM GLT INNER JOIN DRT ON GLT.Code = DRT.Code where DRT.AccountCode = " & RsAcc.Fields("Code") & " and GLT.Tdate" & MDateQry, Cn, adOpenStatic, adLockPessimistic

'' If IsNull(RsDrt(0)) Then

'' DrBal = 0

'' Else

'' DrBal = Val(RsDrt(0))

'' End If

''

Page 260: Hindustan Zinc Limited

'''Opening record set for Credit Transactions

'' Set RsCrt = New ADODB.Recordset

'' If RsCrt.State = 1 Then RsCrt.Close

'' RsCrt.Open "SELECT SUM(CRT.Amount) FROM GLT INNER JOIN CRT ON GLT.Code = CRT.Code where CRT.AccountCode = " & RsAcc.Fields("Code") & " and GLT.TDate" & MDateQry, Cn, adOpenStatic, adLockPessimistic

'' If IsNull(RsCrt(0)) Then

'' CrBal = 0

'' Else

'' CrBal = Val(RsCrt(0))

'' End If

''

''

'''Generating Difference between Total Debit and Total Credit

'' Dim VBal As Double

'' VBal = Val(DrBal) - Val(CrBal)

''

'''Inserting data into TblRep

'' Cn.Execute "INSERT INTO TblRep (Code, Descrip,TotalDr, TotalCr, Balance, DrCr) VALUES (" & Val(RsAcc("Code")) & ", '" & RsAcc("Remarks") & "', " & Val(DrBal) & ", " & Val(CrBal) & ", " & Abs(Val(VBal)) & ", '" & "-" & "' )"

''

'''Updating Record to know that is the balacne DR or CR

'' If Val(VBal) > 0 Then

'' Cn.Execute "UPDATE TblRep SET DrCr = '" & "Dr" & "' WHERE TotalDr > 0"

'' ElseIf Val(VBal) < 0 Then

'' Cn.Execute "UPDATE TblRep SET DrCr = '" & "Cr" & "' WHERE TotalCr > 0"

'' Else

'' Cn.Execute "UPDATE TblRep SET DrCr = '" & "--" & "' WHERE BALANCE = 0"

Page 261: Hindustan Zinc Limited

'' End If

''

'' DrBal = 0

'' CrBal = 0

'' VBal = 0

''

''

'' RsAcc.MoveNext

'' Next

''

'' Dim mTotalOperating As Double

''

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

'' RsLov.Open "Select Sum(Balance) from TblRep", Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsLov(0)) Then

'' mTotalOperating = 0

'' Else

'' mTotalOperating = Val(RsLov(0))

'' End If

''

'' If De1.rsBalances.State = 1 Then De1.rsBalances.Requery

''

'''========================END Copying Data to TblRep===========================

''

'' RepIncomeStatement.Sections("Section5").Controls("LblTotalOperating").Caption = Val(mTotalOperating)

Page 262: Hindustan Zinc Limited

'''Net Income

'' Dim mNetIncome As Double

'' mNetIncome = Val(mGrossProfit) - Val(mTotalOperating)

'' RepIncomeStatement.Sections("Section5").Controls("LblNetIncome").Caption = Val(mNetIncome)

''

'''Other Income

'' Dim mOtherIncome As Double

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

'' RsLov.Open "SELECT SUM(CRT.Amount) FROM GLT INNER JOIN CRT ON GLT.Code = CRT.Code INNER JOIN Accounts ON CRT.AccountCode = Accounts.Code WHERE Accounts.AccType = 'Other Income' and GLT.Tdate" & MDateQry, Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsLov(0)) Then

'' mOtherIncome = 0

'' Else

'' mOtherIncome = Val(RsLov(0))

'' End If

''

'' RepIncomeStatement.Sections("Section5").Controls("LblOtherIncome").Caption = Val(mOtherIncome)

'''Net Income before tax

'' Dim NetBeforeTax As Double

'' NetBeforeTax = Val(mNetIncome) + Val(mOtherIncome)

'' RepIncomeStatement.Sections("Section5").Controls("LblIncomeBeforeTax").Caption = Val(NetBeforeTax)

''

'''Finding Taxes Amount

'' Dim mTaxes As Double

Page 263: Hindustan Zinc Limited

'' Set RsLov = New ADODB.Recordset

'' If RsLov.State = 1 Then RsLov.Close

'' RsLov.Open "SELECT SUM(DRT.Amount) FROM GLT INNER JOIN DRT ON GLT.Code = DRT.Code INNER JOIN Accounts ON DRT.AccountCode = Accounts.Code WHERE Accounts.AccType like '%Tax%' and GLT.Tdate" & MDateQry, Cn, adOpenStatic, adLockReadOnly

'' If IsNull(RsLov(0)) Then

'' mTaxes = 0

'' Else

'' mTaxes = Val(RsLov(0))

'' End If

''

'' RepIncomeStatement.Sections("Section5").Controls("LblTaxes").Caption = Val(mTaxes)

''

'''Net Income After Taxes

'' Dim NetAfterTax As Double

''

'' NetAfterTax = Val(NetBeforeTax) - Val(mTaxes)

'' RepIncomeStatement.Sections("Section5").Controls("LblIncomeAfterTax").Caption = Val(NetAfterTax)

''

''End Sub

''Public Sub BalanceSheet()

'''Deleting Old Records

'' Cn.Execute "Delete from TblTrialCat"

''

'''Categorized Trial Balance

'' Set RsAcc = New ADODB.Recordset

Page 264: Hindustan Zinc Limited

'' If RsAcc.State = 1 Then RsAcc.Close

'' RsAcc.Open "Select MainHead,Code,Remarks from Accounts Where MainHead in (1,2,3)", Cn, adOpenStatic, adLockReadOnly

'' Dim Vc1 As Single

'' For Vc1 = 1 To RsAcc.RecordCount

'' Set RsAcType = New ADODB.Recordset

'' If RsAcType.State = 1 Then RsAcType.Close

'' RsAcType.Open "Select Code from AccountTypes where Code = " & Val(RsAcc("MainHead")) & "", Cn, adOpenStatic, adLockReadOnly

''

'''Opening record set for Debit Transactions

'' Set RsDrt = New ADODB.Recordset

'' If RsDrt.State = 1 Then RsDrt.Close

'' RsDrt.Open "Select Sum(Amount) from DRt where AccountCode = " & RsAcc("Code"), Cn, adOpenStatic, adLockPessimistic

'' If IsNull(RsDrt(0)) Then

'' DrBal = 0

'' Else

'' DrBal = RsDrt(0)

'' End If

''

'''Opening record set for Credit Transactions

'' Set RsCrt = New ADODB.Recordset

'' If RsCrt.State = 1 Then RsCrt.Close

'' RsCrt.Open "Select Sum(Amount) from CRt where AccountCode = " & RsAcc("Code"), Cn, adOpenStatic, adLockPessimistic

'' If IsNull(RsCrt(0)) Then

'' CrBal = 0

'' Else

Page 265: Hindustan Zinc Limited

'' CrBal = RsCrt(0)

'' End If

''

''

'''Generating Difference between Total Debit and Total Credit for each account

'' Dim VBal As Double

'' VBal = Val(DrBal) - Val(CrBal)

''

'''Inserting Values into TblTrialCat

'' Cn.Execute "INSERT INTO TblTrialCat (MainHead,Code, Descrip, Debit, Credit,Id) VALUES (" & Val(RsAcType("Code")) & ", " & Val(RsAcc("Code")) & ", '" & RsAcc("Remarks") & "',0,0, " & Val(Vc1) & ")"

''

'''Updating Record to know that is the balacne DR or CR

'' If Val(VBal) > 0 Then

'' Cn.Execute "UPDATE TblTrialCat SET Debit = " & Val(VBal) & " where Id = " & Val(Vc1) & ""

'' ElseIf Val(VBal) < 0 Then

'' Cn.Execute "UPDATE TblTrialCat SET Credit = " & Abs(Val(VBal)) & " where Id = " & Val(Vc1) & ""

'' End If

''

'' VBal = 0

'' RsAcc.MoveNext

'' Next

''

'''Showing Report

'' If De1.rsTrialCatMain.State = 1 Then De1.rsTrialCatMain.Close

'' RepTrialCat.Refresh

Page 266: Hindustan Zinc Limited

'' Load RepTrialCat

'' RepTrialCat.Show 1

''

''End Sub

Public Sub ExactRecords()

Dim ExactRowCount As Integer

If PicSrchGrid.Visible = True Then

MshSearch.Rows = 2

MshSearch.Row = 1

ExactRowCount = 0

If TxtGrdSrch.Text = "" Then

SQLQry = "Select Code, Name, AccType from Accounts where Disable = 0"

Else

SQLQry = "Select Code, Name, AccType from Accounts Where Disable = 0 And Name Like '" & TxtGrdSrch.Text & "%'"

End If

Set RsSrch = New ADODB.Recordset

If RsSrch.State = 1 Then RsSrch.Close

RsSrch.Open SQLQry, dB, adOpenStatic, adLockReadOnly

If RsSrch.RecordCount <= 0 Then

MshSearch.Rows = 1

Exit Sub

Page 267: Hindustan Zinc Limited

End If

For ExactRowCount = 1 To RsSrch.RecordCount

If ExactRowCount >= MshSearch.Rows - 1 Then

MshSearch.Rows = MshSearch.Rows + 1

MshSearch.Row = MshSearch.Row + 1

End If

MshSearch.TextMatrix(ExactRowCount, 0) = RsSrch(1)

MshSearch.TextMatrix(ExactRowCount, 1) = RsSrch(0)

MshSearch.TextMatrix(ExactRowCount, 2) = RsSrch(2)

RsSrch.MoveNext

Next

MshSearch.Col = 0

MshSearch.Row = 1

MshSearch.SetFocus

MshSearch.ColAlignment(1) = 3

End If

End Sub

Public Sub ProductStock()

Dim mProdId As Integer

Dim mProdName As String

Page 268: Hindustan Zinc Limited

Dim mOpQty As Single

Dim mPurQty As Single

Dim mSalQty As Single

Dim mReOrderQty As Single

Dim mCounter As Integer

Dim AvblStock As Single

Con.Execute "Delete from RepStockStatus"

'=====================Checking Available Stock=======================

Set RsMisc = New ADODB.Recordset

If RsMisc.State = 1 Then RsMisc.Close

RsMisc.Open "Select AcId,AcTitle,ReOrderPoint from Accounts where AcType = 'Product'", Con, adOpenStatic, adLockOptimistic

For mCounter = 1 To RsMisc.RecordCount

mProdId = Val(RsMisc(0))

mProdName = RsMisc(1)

mReOrderQty = Val(RsMisc(2))

'Opening Stock

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 269: Hindustan Zinc Limited

RS.Open "Select * from Product_Openings where ProdId = " & Val(mProdId) & "", Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

GoTo CheckPurchase

Else

mOpQty = Val(RS(1))

End If

RS.Close

Set RS = Nothing

CheckPurchase:

'Purchases

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty) from Purchase_Detail where ProdId = " & Val(mProdId) & "", Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

mPurQty = 0

GoTo CheckSales

Else

mPurQty = Val(RS(0))

End If

RS.Close

Set RS = Nothing

CheckSales:

'Sales

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 270: Hindustan Zinc Limited

RS.Open "Select Sum(Qty) from Sale_Detail where ProdId = " & Val(mProdId) & "", Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

mSalQty = 0

GoTo MyStock

Else

mSalQty = Val(RS(0))

End If

MyStock:

'Available Stock

AvblStock = Val(mOpQty) + Val(mPurQty) - Val(mSalQty)

'Fetching Data into RepStockStatus

Con.Execute "Insert Into RepStockStatus Values(" & Val(mProdId) & ", '" & mProdName & "', " & Val(AvblStock) & ", " & Val(mReOrderQty) & ")"

RsMisc.MoveNext

Next

dataRepStockStatus.Show vbModal

End Sub

Public Sub PurchaseHistoryByDate()

dataRepPurchaseByDate.Show vbModal

Page 271: Hindustan Zinc Limited

''SELECT Purchase_Main.PurId, Purchase_Main.PurDate, Accounts.AcId, Accounts.AcTitle, Purchase_Main.TotalAmount FROM (Purchase_Main INNER JOIN Purchase_Detail ON Purchase_Main.PurId = Purchase_Detail.PurId) INNER JOIN Accounts ON Purchase_Detail.AcId = Accounts.AcId;

End Sub

Public Sub PurchaseHistoryBySupplier()

dataRepPurchaseBySupplier.Show vbModal

End Sub

Public Sub DateWiseSaleHistory()

dataRepSaleByDate.Show vbModal

End Sub

Public Sub CustomerWiseSaleHistory()

dataRepSaleByCustomer.Show vbModal

End Sub

Public Sub ProductPriceList()

dataRepPriceList.Show vbModal

End Sub

Public Sub StockAdjustment()

If DeRep.rsStockAdjustment.State = 1 Then DeRep.rsStockAdjustment.Close

WaitMode

DeRep.StockAdjustment TxtLookup.Text, TxtFrom.Value, TxtTo.Value

Page 272: Hindustan Zinc Limited

RepStockAdjustment.Sections("Section4").Controls("LblDate").Caption = "From: " & TxtFrom.Value & " " & "To: " & TxtTo.Value

RepStockAdjustment.Sections("Section4").Controls("LblAdjType").Caption = UCase(TxtLookup.Text)

Load RepStockAdjustment

RepStockAdjustment.Refresh

RepStockAdjustment.Show 1

End Sub

Public Sub VehData()

Dim TotVeh As Integer

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select VehNo from VehicleReg", dB, adOpenStatic, adLockOptimistic

If RsLov.RecordCount <= 0 Then

Exit Sub

End If

For TotVeh = 1 To RsLov.RecordCount

ListLov.AddItem RsLov(0)

RsLov.MoveNext

Next

End Sub

Page 273: Hindustan Zinc Limited

Public Sub VehicleWiseSaleHistory()

If DeRep.rsInvoicePrint.State = 1 Then DeRep.rsInvoicePrint.Close

DeRep.InvoicePrint TxtLookup.Text, TxtFrom.Value, TxtTo.Value

RepInvoicePrint.Sections("ReportHeader").Controls("LblDate").Caption = "From: " & TxtFrom.Value & " " & "To: " & TxtTo.Value

RepInvoicePrint.Sections("ReportHeader").Controls("LblVeh").Caption = UCase(TxtLookup.Text)

RepInvoicePrint.Sections("ReportHeader").Controls("LblMs").Caption = DeptName

Load RepInvoicePrint

RepInvoicePrint.Refresh

RepInvoicePrint.Show 1

End Sub

Public Sub DeptData()

'Getting Dept Code for the selected Veh

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select DeptCode From VehicleReg Where VehNo = '" & TxtLookup.Text & "'", dB, adOpenStatic, adLockOptimistic

'Getting Dept Name for the Selected Veh

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 274: Hindustan Zinc Limited

RS.Open "Select Name from Customer Where Code = " & Val(RsLov(0)) & "", dB, adOpenStatic, adLockOptimistic

DeptName = RS(0)

End Sub

Public Sub MeterStock()

Dim Vc1 As Integer

Dim mOpStock As Single

Dim mIssue As Single

Dim mAvbl As Single

Dim mConsume As Single

Dim mDiff As Single

dB.Execute "Delete from TblMeterStock"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Code from MeterInfo", dB, adOpenStatic, adLockOptimistic

If RS.EOF = True Then

MsgBox "No data found", vbInformation, "Message"

Exit Sub

End If

For Vc1 = 1 To RS.RecordCount

'Op Stock

Page 275: Hindustan Zinc Limited

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select OpStock from MeterInfo Where Code = " & Val(Vc1) & "", dB, adOpenForwardOnly, adLockReadOnly

If IsNull(RsLov(0)) Then

mOpStock = 0

Else

mOpStock = Val(RsLov(0))

End If

'Issue

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(Qty) from MeterIssue Where MeterCode = " & Val(Vc1) & "", dB, adOpenForwardOnly, adLockReadOnly

If IsNull(RsLov(0)) Then

mIssue = 0

Else

mIssue = Val(RsLov(0))

End If

mAvbl = Val(mOpStock) + Val(mIssue)

'Consumption

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

Page 276: Hindustan Zinc Limited

RsLov.Open "Select Sum(ClosingReading)-Sum(OpReading)+Sum(TestQty) from MeterReading Where MeterCode = " & Val(Vc1) & "", dB, adOpenForwardOnly, adLockReadOnly

If IsNull(RsLov(0)) Then

mConsume = 0

Else

mConsume = Val(RsLov(0))

End If

mDiff = Val(mAvbl) - Val(mConsume)

dB.Execute "INSERT INTO TblMeterStock(MeterCode,OpStock,Issue,Avbl,Consume,Diff) VALUES(" & Val(Vc1) & ", " & Val(mOpStock) & ", " & Val(mIssue) & ", " & Val(mAvbl) & ", " & Val(mConsume) & ", " & Val(mDiff) & " )"

RS.MoveNext

Next

End Sub

Private Sub TxtToCode_KeyPress(KeyAscii As Integer)

On Error Resume Next

Cng KeyAscii

On Error Resume Next

End Sub

Public Sub Pause(ByVal Delay As Single)

Dim X As Single

X = Timer + Delay ' Add a delay to the current time

Do While X > Timer ' and waits for the current time

Page 277: Hindustan Zinc Limited

DoEvents ' to catch up.

Loop

End Sub

Public Sub CashBookData()

Dim CashAccountCode As Integer

Dim DrCash As Single

Dim CrCash As Single

Dim LastCash As Single

Dim CrSale As Single

Dim CashSale As Single

Dim Receipts As Single

Dim CrPurchase As Single

Dim CashPurchase As Single

Dim Payments As Single

Dim Parties As Single

Dim CreditTotal As Single

Dim DebitTotal As Single

'=============== Getting Last Day Cash (before the given date)

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Code from Accounts Where AccType In ('Cash')", dB, adOpenStatic, adLockOptimistic

If RsLov.EOF = True Then

MsgBox "Cash Account not found", vbInformation, "Message"

Page 278: Hindustan Zinc Limited

Exit Sub

Else

CashAccountCode = Val(RsLov(0))

End If

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(Amount) from DrtGlt Where AccountCode = " & Val(CashAccountCode) & " And Tdate < #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

DrCash = 0

Else

DrCash = Val(RsLov(0))

End If

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RS.Close

RsLov.Open "Select Sum(Amount) from CrtGlt Where AccountCode = " & Val(CashAccountCode) & " And Tdate < #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

CrCash = 0

Else

CrCash = Val(RsLov(0))

End If

LastCash = Val(DrCash) - Val(CrCash)

Page 279: Hindustan Zinc Limited

'=============== Getting Today's Credit Sale

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(TotalAmount) from Sale Where SaleType = '" & "Credit" & "' And Tdate = #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

CrSale = 0

Else

CrSale = Val(RsLov(0))

End If

'=============== Getting Today's Cash Sale

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(TotalAmount) from Sale Where SaleType = '" & "Cash" & "' And Tdate = #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

CashSale = 0

Else

CashSale = Val(RsLov(0))

End If

'=============== Getting Today's Receipts

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

Page 280: Hindustan Zinc Limited

RsLov.Open "Select Sum(Amount) from DrtGlt Where AccountCode = " & Val(CashAccountCode) & " And Tdate = #" & TxtFrom.Value & "# And TType Not In ('SAL')", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

Receipts = 0

Else

Receipts = Val(RsLov(0))

End If

'--------------------- DEBIT SIDE

'=============== Getting Today's Credit Purchase

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(TotalAmount) from Purchase Where PurchaseType = '" & "Credit" & "' And Tdate = #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

CrPurchase = 0

Else

CrPurchase = Val(RsLov(0))

End If

'=============== Getting Today's Cash Purchase

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(TotalAmount) from Purchase Where PurchaseType = '" & "Cash" & "' And Tdate = #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

Page 281: Hindustan Zinc Limited

If IsNull(RsLov(0)) Then

CashPurchase = 0

Else

CashPurchase = Val(RsLov(0))

End If

'=============== Getting Today's Payments

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(Amount) from CrtGlt Where AccountCode = " & Val(CashAccountCode) & " And Tdate = #" & TxtFrom.Value & "# And TType Not In ('PUR')", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

Payments = 0

Else

Payments = Val(RsLov(0))

End If

'=============== Getting Today's Credit Sale (To balance on both sides with the caption name {Parties})

Set RsLov = New ADODB.Recordset

If RsLov.State = 1 Then RsLov.Close

RsLov.Open "Select Sum(TotalAmount) from Sale Where SaleType = '" & "Credit" & "' And Tdate = #" & TxtFrom.Value & "#", dB, adOpenStatic, adLockOptimistic

If IsNull(RsLov(0)) Then

Parties = 0

Else

Parties = Val(RsLov(0))

Page 282: Hindustan Zinc Limited

End If

RepCashBook.Sections("Section4").Controls("LblDate").Caption = Format(TxtFrom, "dd/mm/yyyy")

'Showing Totals In the Report

'CREDIT SIDE

RepCashBook.Sections("Section2").Controls("LblLastCash").Caption = Val(LastCash)

RepCashBook.Sections("Section2").Controls("LblCreditSale").Caption = Val(CrSale)

RepCashBook.Sections("Section2").Controls("LblCashSale").Caption = Val(CashSale)

RepCashBook.Sections("Section2").Controls("LblCashReceipts").Caption = Val(Receipts)

'DEBIT SIDE

RepCashBook.Sections("Section2").Controls("LblCreditPurchase").Caption = Val(CrPurchase)

RepCashBook.Sections("Section2").Controls("LblCashPurchase").Caption = Val(CashPurchase)

RepCashBook.Sections("Section2").Controls("LblAllPayment").Caption = Val(Payments)

RepCashBook.Sections("Section2").Controls("LblParties").Caption = Val(Parties)

'BALANCING CREDIT SIDE TOTAL FOR CREDIT PURCHASE

RepCashBook.Sections("Section2").Controls("LblCreditParties").Caption = Val(CrPurchase)

'CREDIT SIDE TOTAL

CreditTotal = Val(LastCash) + Val(CrSale) + Val(CashSale) + Val(Receipts) + Val(CrPurchase)

Page 283: Hindustan Zinc Limited

RepCashBook.Sections("Section2").Controls("LblCreditTotal").Caption = Val(CreditTotal)

'DEBIT SIDE TOTAL

DebitTotal = Val(CrPurchase) + Val(CashPurchase) + Val(Payments) + Val(Parties)

RepCashBook.Sections("Section2").Controls("LblDebitTotal").Caption = Val(DebitTotal)

'BALANCE TOTAL

RepCashBook.Sections("Section2").Controls("LblTotal").Caption = Val(CreditTotal) - Val(DebitTotal)

RepCashBook.Show 1

End Sub

Public Sub SetSearchGrid()

'Setting of Search Grid

With MshSearch

.ColWidth(1) = 2500

.ColWidth(2) = 1500

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

.RowHeight(0) = 400

.ColAlignmentFixed(0) = 4

Page 284: Hindustan Zinc Limited

.ColAlignmentFixed(1) = 4

.ColAlignmentFixed(2) = 4

End With

End Sub

Public Sub FillGridAccounts()

'Filling all Accounts Data in Search grid

Select Case VRun

Case "Accounts Status"

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcType = '" & TxtLookup.Text & "'"

Case "Accounts Ledger"

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcType NOT in ('Product')"

Case "Supplier Wise Purchase History"

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcType in ('Customer','Supplier')"

Case "Product Wise Purchase History"

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcType in ('Product')"

Case "Customer Wise Sale History"

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcType in ('Customer','Supplier')"

Page 285: Hindustan Zinc Limited

Case "Product Wise Sale History"

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcType in ('Product')"

End Select

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

If RS.RecordCount <= 0 Then

MsgBox "No data found", vbInformation, "Message"

Exit Sub

End If

Set MshSearch.DataSource = RS

End Sub

Public Sub SearchRecord()

'Filling the Search grid with Critarial Data

Dim SearchedRowCount As Integer

If PicSrchGrid.Visible = True Then

MshSearch.Rows = 2

MshSearch.Row = 0

Page 286: Hindustan Zinc Limited

SearchedRowCount = 0

SQLQry = "Select AcId, AcTitle, AcType from ViewHeadWise where AcTitle Like '" & TxtGrdSrch.Text & "%'"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open SQLQry, Con, adOpenStatic, adLockReadOnly

If RS.RecordCount <= 0 Then

MshSearch.Clear

With MshSearch

.TextMatrix(0, 0) = "ID"

.TextMatrix(0, 1) = "Account Title"

.TextMatrix(0, 2) = "Account Type"

End With

MshSearch.Rows = 2

Exit Sub

End If

For SearchedRowCount = 1 To RS.RecordCount

If SearchedRowCount >= MshSearch.Rows - 1 Then

MshSearch.Rows = MshSearch.Rows + 1

Page 287: Hindustan Zinc Limited

MshSearch.Row = MshSearch.Row + 1

End If

MshSearch.TextMatrix(SearchedRowCount, 0) = RS(0)

MshSearch.TextMatrix(SearchedRowCount, 1) = RS(1)

MshSearch.TextMatrix(SearchedRowCount, 2) = RS(2)

RS.MoveNext

Next

MshSearch.Col = 0

MshSearch.Row = 0

MshSearch.ColAlignment(0) = 3

End If

End Sub

Public Sub ReOrderStatus()

dataRepReOrderPoint.Show vbModal

End Sub

Public Sub PurchaseHistoryByProduct()

dataRepPurchaseByProduct.Show vbModal

End Sub

Public Sub SaleHistoryByProduct()

dataRepSaleByProduct.Show vbModal

Page 288: Hindustan Zinc Limited

End Sub

Public Sub ProductsToReorder()

dataRepProductToReorder.Show vbModal

End Sub

Public Sub TrialBalanceData()

Dim AcId As Single

Dim AcTitle As String

Dim SumofDR As Single

Dim SumofCr As Single

Dim Balance As Single

Dim DrBal As Single

Dim CrBal As Single

Con.Execute "Delete * from RepTrialBalance"

'Copying data from ViewTrialBalance to RepTrialBalance

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewTrialBalance", Con, adOpenStatic, adLockOptimistic

While Not RS.EOF = True

AcId = Val(RS(0))

AcTitle = RS(1)

SumofDR = Val(RS(2))

SumofCr = Val(RS(3))

Balance = Val(RS(2)) - Val(RS(3))

If Balance > 0 Then

Page 289: Hindustan Zinc Limited

DrBal = Abs(Balance)

CrBal = 0

ElseIf Balance < 0 Then

CrBal = Abs(Balance)

DrBal = 0

Else

DrBal = 0

CrBal = 0

End If

Con.Execute "Insert into RepTrialBalance(Id,Title,Dr,Cr) Values (" & Val(AcId) & ", '" & AcTitle & "', " & Val(DrBal) & ", " & Val(CrBal) & ")"

RS.MoveNext

Wend

'Getting Total of both (Debit / Credit Side)

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Dr),Sum(Cr) from RepTrialBalance", Con, adOpenStatic, adLockOptimistic

On Error Resume Next

TrialDr = Val(RS(0))

TrialCr = Val(RS(1))

Page 290: Hindustan Zinc Limited

'=============================================REPORT===============================================

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepTrialBalance", Con, adOpenStatic, adLockOptimistic

With DataRepTrialBalance

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section1").Controls("Text1").DataField = "Id"

.Sections("Section1").Controls("Text2").DataField = "Title"

.Sections("Section1").Controls("Text3").DataField = "DR"

.Sections("Section1").Controls("Text4").DataField = "CR"

End With

End Sub

Public Sub IncomeStatData()

Dim NetSale As Single

Dim COG As Single

Dim ProfitB4OtherIncome As Single

Dim OtherIncome As Single

Dim Expense As Single

Page 291: Hindustan Zinc Limited

Dim NetProfit As Single

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

' NET SALES OF THE DEFINED PERIOD

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(TotalAmount) from Sale_Main where SaleDate" & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

NetSale = 0

Else

NetSale = Val(RS(0))

End If

Con.Execute "Update RepIncomeStat Set Amount = " & Val(NetSale) & " where Id =1"

' COST OF GOODS SOLD

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty*PurAvg) from ProfitLoss where SaleDate" & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

COG = 0

Else

COG = Val(RS(0))

Page 292: Hindustan Zinc Limited

End If

Con.Execute "Update RepIncomeStat Set Amount = " & Val(COG) & " where Id =2"

' GROSS PROFIT BEFORE OTHER INCOME

ProfitB4OtherIncome = Val(NetSale) - Val(COG)

Con.Execute "Update RepIncomeStat Set Amount = " & Val(ProfitB4OtherIncome) & " where Id =3"

' GET OTHER INCOME

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(OtherIncome) from ViewOtherIncome where TransDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

OtherIncome = 0

Else

OtherIncome = Val(RS(0))

End If

Con.Execute "Update RepIncomeStat Set Amount = " & Val(OtherIncome) & " where Id =4"

' GET GROSS PROFIT

Gross = Val(ProfitB4OtherIncome) + Val(OtherIncome)

Page 293: Hindustan Zinc Limited

Con.Execute "Update RepIncomeStat Set Amount = " & Val(Gross) & " where Id =5"

' GET EXPENSE

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(TotalExp) from ViewExpense where TransDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Expense = 0

Else

Expense = Val(RS(0))

End If

Con.Execute "Update RepIncomeStat Set Amount = " & Val(Expense) & " where Id =6"

' NET PROFIT

NetProfit = Val(Gross) - Val(Expense)

Con.Execute "Update RepIncomeStat Set Amount = " & Val(NetProfit) & " where Id =7"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepIncomeStat", Con, adOpenStatic, adLockReadOnly

With dataRepIncomeStat

Set .DataSource = RS

.DataMember = RS.DataMember

Page 294: Hindustan Zinc Limited

.Sections("Section2").Controls("lblNetSale").Caption = Val(NetSale)

.Sections("Section2").Controls("lblCOG").Caption = Val(COG)

.Sections("Section2").Controls("lblGross").Caption = Val(ProfitB4OtherIncome)

.Sections("Section2").Controls("lblOtherIncome").Caption = Val(OtherIncome)

.Sections("Section2").Controls("lblExpense").Caption = Val(Expense)

.Sections("Section2").Controls("lblNetProfit").Caption = Val(NetProfit)

.Sections("Section4").Controls("lblPeriod").Caption = "From " & FrmRep.TxtFrom.Value & " To " & FrmRep.TxtTo.Value

.Show vbModal

End With

End Sub

Page 295: Hindustan Zinc Limited

MODULES

1. modConnection.bas

Public Con As New ADODB.Connection

Public RS As New ADODB.Recordset

Public RsNAV As New ADODB.Recordset

Public InsertRecord As New ADODB.Recordset

Public UpdateRecord As New ADODB.Recordset

Public RsMisc As New ADODB.Recordset

Public Sub dbConnection()

Set Con = New ADODB.Connection

Con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Database\IMSDB.mdb;Persist Security Info=False"

Con.Open

End Sub

Public Sub Main()

Call dbConnection

frmLogin.Show

'' Load frmStart

'' frmStart.Show

End Sub

2. modMisc.bas

Public ctl As Control

18

Page 296: Hindustan Zinc Limited

Public RsMax As New ADODB.Recordset

Public MaxNmbr As Integer

Public mHeadId As Integer

Public TrialDr As Double

Public TrialCr As Double

Public TransactionType As String

Public TransactionRef As String

Public StrQry As String 'Variable Reporting

'Declaring SLEEP API for using as wait between work

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'Switching On / Off buttons according to the mode

Public Function Modes(pNew As Boolean, pOther As Boolean, Frm As Object)

'If new record then

If pNew = True Then

Frm.lbl(0).Enabled = False

Frm.lbl(3).Enabled = False

Frm.lbl(4).Enabled = False

Frm.lbl(5).Enabled = False

'If Not new record then

ElseIf pOther = True Then

Frm.lbl(0).Enabled = True

Frm.lbl(3).Enabled = True

Frm.lbl(4).Enabled = True

Frm.lbl(5).Enabled = True

End If

End Function

Page 297: Hindustan Zinc Limited

'On GotFocus Highlight the Text

Public Function High(txt As TextBox)

txt.SelStart = 0

txt.SelLength = Len(txt)

End Function

'Set focus to the next control usong Enter

Public Function Cng(KeyAscii As Integer)

If KeyAscii = 13 Then

SendKeys vbTab

KeyAscii = 0

End If

End Function

'Clear all text Boxes and Combo Boxes

Public Function Clear(Frm As Form)

For Each ctl In Frm.Controls

If TypeOf ctl Is TextBox Then

ctl.Text = ""

ElseIf TypeOf ctl Is ComboBox Then

ctl.ListIndex = -1

End If

Next

Page 298: Hindustan Zinc Limited

End Function

'Only numbers in textbox

Public Function ONU(KeyAscii As Integer, txt As TextBox)

If KeyAscii > 47 And KeyAscii < 58 Or KeyAscii = 8 Or KeyAscii = 46 Then

If KeyAscii = 46 Then

If InStr(txt.Text, ".") Then

KeyAscii = 0

Exit Function

Else

txt.Text = txt.Text

End If

Else

End If

Else

KeyAscii = 0

End If

End Function

'Getting Maximum number for Code field

Public Function MaxNumber(FieldName As String, TableName As String)

Set RsMax = New ADODB.Recordset

If RsMax.State = 1 Then RsMax.Close

Page 299: Hindustan Zinc Limited

RsMax.Open "SELECT Max(" & FieldName & ") + 1 from " & TableName & " where MaxCode =1", Con, adOpenDynamic, adLockOptimistic

If IsNull(RsMax(0)) Then

MaxNumber = 1

Else

MaxNumber = RsMax(0)

End If

MaxNmbr = Val(MaxNumber)

End Function

'Updating Maximum Number

Public Function UpdateMaxNumber(FieldName As String, TBox As Integer)

Con.Execute "Update Max_Codes Set " & FieldName & " = " & Val(TBox) & ""

End Function

Public Sub ChangeFocusOnEnter(KeyAscii As Integer, Frm As Object)

If KeyAscii = vbKeyReturn Then

SendKeys vbTab

End If

End Sub

Public Function MouseOver(mLabel As Label)

mLabel.ForeColor = vbYellow

mLabel.Font.Underline = True

End Function

Page 300: Hindustan Zinc Limited

3. modNavigation.bas

'Locking the Navigation Button on New Record

Public Function LockNav(Frm As Object)

Frm.lblnav(0).Enabled = False

Frm.lblnav(1).Enabled = False

Frm.lblnav(2).Enabled = False

Frm.lblnav(3).Enabled = False

End Function

'UnLocking the Navigation Button on Cancel

Public Function UnLockNav(Frm As Object)

Frm.lblnav(0).Enabled = True

Frm.lblnav(1).Enabled = True

Frm.lblnav(2).Enabled = True

Frm.lblnav(3).Enabled = True

End Function

4. modWriteInGrid.bas

Public Function EditGrid(Msh As MSHFlexGrid, KeyAscii As Integer)

'==================================== Editing Grid Code For Transaction ====================================

'If First Row selected then

Select Case Msh.Row

Case 0

KeyAscii = 0

Page 301: Hindustan Zinc Limited

Exit Function

End Select

'Block Every Key Except Enter in Column 1 (Account Name)

Select Case Msh.Col

Case 1

'If ENTER is pressed on Account Name Column then move to next column

If KeyAscii = 13 Then

SendKeys "{right}"

Exit Function

End If

KeyAscii = 0

Exit Function

End Select

'---------------------------------------------------------

Select Case KeyAscii

Case 8: 'IF KEY IS BACKSPACE THEN

If Msh.Text <> "" Then Msh.Text = Left$(Msh.Text, (Len(Msh.Text) - 1))

Case 13: 'IF KEY IS ENTER THEN

Page 302: Hindustan Zinc Limited

Select Case Msh.Col

Case Is < 4

'----------Move Curssor to Right Side untill col >= 3------

Msh.SetFocus

SendKeys "{right}"

Case 4

Msh.SetFocus

If (Msh.Row + 1) = Msh.Rows Then

''-------- Null Value Chk in last col---------------

'If values are missing in Debit and Credit Side

If Len(Msh.TextMatrix(Msh.Row, 1)) = 0 Or Msh.TextMatrix(Msh.Row, 1) = "" Then

MsgBox "Select Account Name", vbInformation, "Message"

Msh.Col = 1

Exit Function

End If

'If values are missing in Debit and Credit Side

If Val(Msh.TextMatrix(Msh.Row, 3)) = 0 And Val(Msh.TextMatrix(Msh.Row, 4)) = 0 Then

MsgBox "Enter Debit / Credit Amount", vbInformation, "Message"

Msh.Col = 3

Exit Function

End If

'If values are in both Debit and Credit Side

Page 303: Hindustan Zinc Limited

If Val(Msh.TextMatrix(Msh.Row, 3)) > 0 And Val(Msh.TextMatrix(Msh.Row, 4)) > 0 Then

MsgBox "Enter Only Debit OR Credit Amount", vbInformation, "Message"

Msh.Col = 3

Exit Function

End If

''-------------New Row Create----------

Msh.Rows = Msh.Rows + 1

Msh.Col = 1

''-------------------------------------

''' ''-------------Adding Amount to Debit / credit Textbox----------

''' frmTransaction.txtCredit = Val(frmTransaction.txtCredit) + Val(Msh.TextMatrix(Msh.Row, 4))

''' frmTransaction.txtDebit = Val(frmTransaction.txtDebit) + Val(Msh.TextMatrix(Msh.Row, 3))

'''

''' ''-------------------------------------

End If

SendKeys "{home}" + "{down}" '' + "{right}"

End Select

Case Else 'KeyAscii Select

Page 304: Hindustan Zinc Limited

''-------write any code for Any Validation-------------

Select Case Msh.Col

Case 3, 4

''-------Allow Number Validation-------------

ONUGrid KeyAscii, Msh

End Select

''-------------Write Data in Cells----------

Msh.Text = Msh.Text + Chr$(KeyAscii)

''-------------------------------------

End Select 'KeyAscii Select

End Function

'Only numbers in Grid

Public Function ONUGrid(KeyAscii As Integer, txt As MSHFlexGrid)

If KeyAscii > 47 And KeyAscii < 58 Or KeyAscii = 8 Or KeyAscii = 46 Then

If KeyAscii = 46 Then

If InStr(txt.Text, ".") Then

KeyAscii = 0

Exit Function

Else

txt.Text = txt.Text

End If

Else

End If

Else

Page 305: Hindustan Zinc Limited

KeyAscii = 0

End If

End Function

Public Function SetPSGRID(Msh As MSHFlexGrid) 'Purchase / Sale Grid

'Column Setting

With Msh

.Rows = 2

.Cols = 7

.ColWidth(0) = 400

.ColWidth(1) = 5200 'Product description

.ColWidth(2) = 1000 'Qty

.ColWidth(3) = 1000 'Rate

.ColWidth(4) = 1500 'Amount

.ColWidth(5) = 0 'Product Code

.ColWidth(6) = 0 'Avg Cost

'Column Captions

.TextMatrix(0, 1) = "Product Description"

.TextMatrix(0, 2) = "Quantity"

.TextMatrix(0, 3) = "Price"

.TextMatrix(0, 4) = "Amount"

End With

Page 306: Hindustan Zinc Limited

End Function

Public Function EditGridPS(Msh As MSHFlexGrid, KeyAscii As Integer) ' Purchase / Sale Grid Edit

'==================================== Editing Grid Code For Purchase / Sale ====================================

'If First Row selected then

Select Case Msh.Row

Case 0

KeyAscii = 0

Exit Function

End Select

'Block Every Key Except Enter in Column 1 (Product Name)

Select Case Msh.Col

Case 1

'If ENTER is pressed on Product Name Column then move to next column

If KeyAscii = 13 Then

SendKeys "{right}"

Exit Function

End If

KeyAscii = 0

Exit Function

Page 307: Hindustan Zinc Limited

End Select

'---------------------------------------------------------

Select Case KeyAscii

Case 8: 'IF KEY IS BACKSPACE THEN

If Msh.Text <> "" Then Msh.Text = Left$(Msh.Text, (Len(Msh.Text) - 1))

Case 13: 'IF KEY IS ENTER THEN

Select Case Msh.Col

Case Is < 3

'----------Move Curssor to Right Side untill col >= 3------

Msh.SetFocus

SendKeys "{right}"

Case 3

Msh.SetFocus

If (Msh.Row + 1) = Msh.Rows Then

''-------- Null Value Chk in last col---------------

'If Product Name is missing

If Len(Msh.TextMatrix(Msh.Row, 1)) = 0 Or Msh.TextMatrix(Msh.Row, 1) = "" Then

MsgBox "Select Product Name", vbInformation, "Message"

Msh.Col = 1

Page 308: Hindustan Zinc Limited

Exit Function

End If

'If values are missing of Qty or Price

If Val(Msh.TextMatrix(Msh.Row, 2)) = 0 Or Val(Msh.TextMatrix(Msh.Row, 3)) = 0 Then

MsgBox "Enter Quantity / Price", vbInformation, "Message"

Msh.Col = 2

Exit Function

End If

'Total of Row i.e Qty * Price

Msh.TextMatrix(Msh.Row, 4) = Val(Msh.TextMatrix(Msh.Row, 2)) * Val(Msh.TextMatrix(Msh.Row, 3))

''-------------New Row Create----------

Msh.Rows = Msh.Rows + 1

Msh.Col = 1

''-------------------------------------

End If

SendKeys "{home}" + "{down}" '' + "{right}"

End Select

Case Else 'KeyAscii Select

''-------write any code for Any Validation-------------

Select Case Msh.Col

Page 309: Hindustan Zinc Limited

Case 2, 3, 4

''-------Allow Number Validation-------------

ONUGrid KeyAscii, Msh

End Select

''-------------Write Data in Cells----------

Msh.Text = Msh.Text + Chr$(KeyAscii)

''-------------------------------------

End Select 'KeyAscii Select

End Function

Public Function EditGridAcOp(Msh As MSHFlexGrid, KeyAscii As Integer) 'For Account Opening

'==================================== Editing Grid Code For A/c Opening ====================================

'If First Row selected then

Select Case Msh.Row

Case 0

KeyAscii = 0

Exit Function

End Select

'Block Every Key Except Enter in Column 1 (Account Name)

Select Case Msh.Col

Case 1

Page 310: Hindustan Zinc Limited

'If ENTER is pressed on Account Name Column then move to next column

If KeyAscii = 13 Then

SendKeys "{right}"

Exit Function

End If

KeyAscii = 0

Exit Function

End Select

'---------------------------------------------------------

Select Case KeyAscii

Case 8: 'IF KEY IS BACKSPACE THEN

If Msh.Text <> "" Then Msh.Text = Left$(Msh.Text, (Len(Msh.Text) - 1))

Case 13: 'IF KEY IS ENTER THEN

Select Case Msh.Col

Case Is < 5

'----------Move Curssor to Right Side untill col >= 3------

Msh.SetFocus

SendKeys "{right}"

Case 5

Msh.SetFocus

Page 311: Hindustan Zinc Limited

If (Msh.Row + 1) = Msh.Rows Then

''-------- Null Value Chk in last col---------------

'If values are missing in Debit and Credit Side

If Len(Msh.TextMatrix(Msh.Row, 1)) = 0 Or Msh.TextMatrix(Msh.Row, 1) = "" Then

MsgBox "Select Account Name", vbInformation, "Message"

Msh.Col = 1

Exit Function

End If

'If values are missing in Debit and Credit Side

If Val(Msh.TextMatrix(Msh.Row, 4)) = 0 And Val(Msh.TextMatrix(Msh.Row, 5)) = 0 Then

MsgBox "Enter Debit / Credit Amount", vbInformation, "Message"

Msh.Col = 4

Exit Function

End If

'If values are in both Debit and Credit Side

If Val(Msh.TextMatrix(Msh.Row, 4)) > 0 And Val(Msh.TextMatrix(Msh.Row, 5)) > 0 Then

MsgBox "Enter Only Debit OR Credit Amount", vbInformation, "Message"

Msh.Col = 3

Exit Function

End If

''-------------New Row Create----------

Page 312: Hindustan Zinc Limited

Msh.Rows = Msh.Rows + 1

Msh.Col = 1

''-------------------------------------

End If

SendKeys "{home}" + "{down}" '' + "{right}"

End Select

Case Else 'KeyAscii Select

''-------write any code for Any Validation-------------

Select Case Msh.Col

Case 3, 4, 5

''-------Allow Number Validation-------------

ONUGrid KeyAscii, Msh

End Select

''-------------Write Data in Cells----------

Msh.Text = Msh.Text + Chr$(KeyAscii)

''-------------------------------------

End Select 'KeyAscii Select

End Function

5. modWriteOnPictureBox.bas

Public Sub PrintToCenter(Msg As String, PicBox As PictureBox, FormTop As Boolean)

Page 313: Hindustan Zinc Limited

If FormTop = False Then 'Its mean menu

With PicBox

.AutoRedraw = -1

.Font = "Courier New"

.FontSize = 8

.FontBold = False

.ForeColor = vbBlack

HalfWidth = .TextWidth(Msg) / 2 ' Calculate one-half width.

HalfHeight = .TextHeight(Msg) / 2 ' Calculate one-half height.

.CurrentX = .ScaleWidth / 2 - HalfWidth ' Set X.

.CurrentY = .ScaleHeight / 2 - HalfHeight ' Set Y.

End With

Else 'its mean Form Title Bar

With PicBox

.AutoRedraw = -1

.Font = "Courier New"

.FontSize = 14

.FontBold = True

.ForeColor = vbWhite

HalfWidth = .TextWidth(Msg) / 2 ' Calculate one-half width.

HalfHeight = .TextHeight(Msg) / 2 ' Calculate one-half height.

.CurrentX = .ScaleWidth / 2 - HalfWidth ' Set X.

.CurrentY = .ScaleHeight / 2 - HalfHeight ' Set Y.

End With

Page 314: Hindustan Zinc Limited

End If

PicBox.Print Msg ' Print message.

End Sub

Page 315: Hindustan Zinc Limited

REPORTS

1. daraRepAcLedger.Dsr

This report is to display the account ledger.

Coding:

Private Sub DataReport_Initialize()

If Con.State = 1 Then

Con.Close

End If

modConnection.dbConnection

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepAcLedger", Con, adOpenStatic, adLockOptimistic

RS.Requery

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

'PAGE HEADER

.Sections("Section2").Controls("lblAcId").Caption = Val(FrmRep.TxtLookupCode)

.Sections("Section2").Controls("lblAcTitle").Caption = " " & FrmRep.TxtLookup.Text

.Sections("Section2").Controls("lblDateFrom").Caption = FrmRep.TxtFrom.Value

19

Page 316: Hindustan Zinc Limited

.Sections("Section2").Controls("lblDateTo").Caption = FrmRep.TxtTo.Value

'DETAIL SECTION

.Sections("Section1").Controls("txtdate").DataField = "tdate"

.Sections("Section1").Controls("txtDescript").DataField = "Descript"

.Sections("Section1").Controls("txtDebit").DataField = "Dr"

.Sections("Section1").Controls("txtCredit").DataField = "Cr"

.Sections("Section1").Controls("txtBalance").DataField = "Balance"

.Sections("Section1").Controls("txtDrCr").DataField = "DrCr"

.Refresh

End With

End Sub

2. dataRepAccountStatus.Dsr

This report is to display the account status.

Coding:

Dim DrAmt As Single

Dim CRAmt As Single

Dim Balance As Single

Private Sub DataReport_Initialize()

With Me

.Sections("Section4").Controls("lblTitle").Caption = UCase(FrmRep.TxtLookup.Text) & " ACCOUNTS STATUS"

.Sections("Section4").Controls("lblDate").Caption = Format(Date, "dd/mm/yyyy")

End With

If Not FrmRep.TxtLookup.Text = "ALL" Then

Page 317: Hindustan Zinc Limited

Me.Sections("Section5").Controls("lblNote").Visible = False

Else

Me.Sections("Section5").Controls("lblNote").Visible = True

End If

'Creating Temp Table for Account Status Report

' Drop the Temp Accounts Status table if it already exists.

On Error Resume Next

Con.Execute "DROP TABLE RepAccountStatus"

On Error Resume Next

' Create the table.

Con.Execute _

"CREATE TABLE RepAccountStatus(" & _

"AcId INTEGER NOT NULL," & _

"AcTitle VARCHAR(40) NOT NULL," & _

"AcType VARCHAR(25) NOT NULL," & _

"DR SINGLE NOT NULL," & _

"CR SINGLE NOT NULL)"

' Fetching Data into RepAccountStatus Table

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open StrQry, Con, adOpenStatic, adLockOptimistic

While Not RS.EOF = True

Page 318: Hindustan Zinc Limited

If Val(RS(3)) > 0 Then

CRAmt = 0

DrAmt = Val(RS(3))

ElseIf Val(RS(3)) < 0 Then

DrAmt = 0

CRAmt = Val(RS(3))

Else

DrAmt = 0

CRAmt = 0

End If

Con.Execute "Insert into RepAccountStatus Values( " & Val(RS(0)) & ", '" & RS(1) & "', '" & RS(2) & "', " & Val(DrAmt) & ", " & Abs(Val(CRAmt)) & ")"

RS.MoveNext

Wend

'Getting data from Table

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepAccountStatus", Con, adOpenStatic, adLockOptimistic

'Report

With dataRepAccountStatus

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section1").Controls("txtId").DataField = "AcId"

Page 319: Hindustan Zinc Limited

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtType").DataField = "AcType"

.Sections("Section1").Controls("txtDr").DataField = "DR"

.Sections("Section1").Controls("txtCr").DataField = "CR"

End With

End Sub

Private Sub DataReport_Terminate()

' Drop the Temp Accounts Status table on exit.

RS.Close

Set RS = Nothing

Con.Execute "DROP TABLE RepAccountStatus"

End Sub

3. dataRepIncomeStat.Dsr

This report is to display the income statement.

Coding:

Private Sub DataReport_Error(ByVal JobType As MSDataReportLib.AsyncTypeConstants, ByVal Cookie As Long, ByVal ErrObj As MSDataReportLib.RptError, ShowError As Boolean)

End Sub

Page 320: Hindustan Zinc Limited

4. dataRepPriceList.Dsr

This report is to display the price list.

Coding:

Private Sub DataReport_Initialize()

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select AcId, AcTitle, SalePrice from Accounts where Actype = 'Product'", Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

End If

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section4").Controls("lblDate").Caption = Format(Date, "dd/mm/yyyy")

.Sections("Section1").Controls("txtId").DataField = "AcId"

.Sections("Section1").Controls("TxtName").DataField = "AcTitle"

.Sections("Section1").Controls("txtPrice").DataField = "SalePrice"

Page 321: Hindustan Zinc Limited

End With

End Sub

5. dataRepProductToReorder.Dsr

This report is to display the list of products with their reoder status.

Coding:

Private Sub DataReport_Initialize()

Dim mProdId As Integer

Dim mProdName As String

Dim mOpQty As Single

Dim mPurQty As Single

Dim mSalQty As Single

Dim mReOrderQty As Single

Dim mCounter As Integer

Dim AvblStock As Single

Con.Execute "Delete from RepProductsToReorder"

'=====================Checking Available Stock=======================

Set RsMisc = New ADODB.Recordset

If RsMisc.State = 1 Then RsMisc.Close

Page 322: Hindustan Zinc Limited

RsMisc.Open "Select AcId,AcTitle,ReOrderPoint from Accounts where AcType = 'Product'", Con, adOpenStatic, adLockOptimistic

For mCounter = 1 To RsMisc.RecordCount

mProdId = Val(RsMisc(0))

mProdName = RsMisc(1)

mReOrderQty = Val(RsMisc(2))

'Opening Stock

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from Product_Openings where ProdId = " & Val(mProdId) & "", Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

GoTo CheckPurchase

Else

mOpQty = Val(RS(1))

End If

RS.Close

Set RS = Nothing

CheckPurchase:

'Purchases

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty) from Purchase_Detail where ProdId = " & Val(mProdId) & "", Con, adOpenStatic, adLockOptimistic

Page 323: Hindustan Zinc Limited

If IsNull(RS(0)) Then

mPurQty = 0

GoTo CheckSales

Else

mPurQty = Val(RS(0))

End If

RS.Close

Set RS = Nothing

CheckSales:

'Sales

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty) from Sale_Detail where ProdId = " & Val(mProdId) & "", Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

mSalQty = 0

GoTo MyStock

Else

mSalQty = Val(RS(0))

End If

MyStock:

'Available Stock

AvblStock = Val(mOpQty) + Val(mPurQty) - Val(mSalQty)

If AvblStock < mReOrderQty Then

'Fetching Data into RepStockStatus

Page 324: Hindustan Zinc Limited

Con.Execute "Insert Into RepProductsToReorder Values(" & Val(mProdId) & ", '" & mProdName & "', " & Val(AvblStock) & ", " & Val(mReOrderQty) & ")"

End If

RsMisc.MoveNext

Next

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepProductsToReorder", Con, adOpenStatic, adLockPessimistic

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section1").Controls("txtId").DataField = "ProductID"

.Sections("Section1").Controls("txtName").DataField = "ProductName"

.Sections("Section1").Controls("txtStock").DataField = "AvblStock"

.Sections("Section1").Controls("txtReorder").DataField = "ReOrderPoint"

End With

End Sub

6. dataRepPurchaseByDate.Dsr

This report is to display the purchase details ordered by date.

Page 325: Hindustan Zinc Limited

Coding:

Dim mDateQry As String

Dim mTotal As Single

Private Sub DataReport_Initialize()

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewRepPurchase where PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section4").Controls("lbldate").Caption = "From " & Format(FrmRep.TxtFrom.Value, "dd/mm/yyyy") & " To " & Format(FrmRep.TxtTo.Value, "dd/mm/yyyy")

.Sections("Section1").Controls("txtId").DataField = "PurId"

.Sections("Section1").Controls("txtDate").DataField = "PurDate"

.Sections("Section1").Controls("txtAcId").DataField = "AcId"

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtAmount").DataField = "TotalAmount"

End With

Set RS = New ADODB.Recordset

Page 326: Hindustan Zinc Limited

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(TotalAmount) from ViewRepPurchase where PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblTotal").Caption = Val(RS(0))

End Sub

7. dataRepPurchaseByProduct.Dsr

This report is to display the purchase details ordered by product.

Coding:

Dim mDateQry As String

Private Sub DataReport_Initialize()

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewPurchaseByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

Page 327: Hindustan Zinc Limited

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section2").Controls("lblProdId").Caption = Val(FrmRep.TxtLookupCode)

.Sections("Section2").Controls("lblProdName").Caption = FrmRep.TxtLookup

.Sections("Section2").Controls("lblDateFrom").Caption = Format(FrmRep.TxtFrom.Value, "dd/mm/yyyy")

.Sections("Section2").Controls("lblDateTo").Caption = Format(FrmRep.TxtTo.Value, "dd/mm/yyyy")

'DETAIL

.Sections("Section1").Controls("txtDate").DataField = "PurDate"

.Sections("Section1").Controls("txtPurId").DataField = "PurId"

.Sections("Section1").Controls("txtAcId").DataField = "AcId"

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtQty").DataField = "Qty"

.Sections("Section1").Controls("txtPrice").DataField = "Price"

.Sections("Section1").Controls("txtAmount").DataField = "Amount"

End With

'Total Qty

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Qty) from ViewPurchaseByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

Page 328: Hindustan Zinc Limited

End If

Me.Sections("Section5").Controls("lblTotalQty").Caption = Val(RS(0))

'Avg Price

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select AVG(Price) from ViewPurchaseByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblAvgPrice").Caption = Val(RS(0))

'Total Amount

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Amount) from ViewPurchaseByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblTotalAmount").Caption = Val(RS(0))

End Sub

Page 329: Hindustan Zinc Limited

8. dataRepPurchaseBySupplier.Dsr

This report is to display the purchase details ordered by supplier.

Coding:

Dim mDateQry As String

Dim mTotal As Single

Private Sub DataReport_Initialize()

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewRepPurchase where AcId = " & Val(FrmRep.TxtLookupCode) & " and PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section2").Controls("lblAcId").Caption = Val(FrmRep.TxtLookupCode)

.Sections("Section2").Controls("lblAcTitle").Caption = FrmRep.TxtLookup

.Sections("Section2").Controls("lblDateFrom").Caption = Format(FrmRep.TxtFrom.Value, "dd/mm/yyyy")

.Sections("Section2").Controls("lblDateTo").Caption = Format(FrmRep.TxtTo.Value, "dd/mm/yyyy")

'DETAIL

.Sections("Section1").Controls("txtId").DataField = "PurId"

Page 330: Hindustan Zinc Limited

.Sections("Section1").Controls("txtDate").DataField = "PurDate"

.Sections("Section1").Controls("txtAcId").DataField = "AcId"

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtAmount").DataField = "TotalAmount"

End With

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(TotalAmount) from ViewRepPurchase where AcId = " & Val(FrmRep.TxtLookupCode) & " and PurDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblTotal").Caption = Val(RS(0))

End Sub

9. dataRepReorderPoint.Dsr

This report is to display the reorder point.

Coding:

Private Sub DataReport_Initialize()

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select AcId, AcTitle, ReOrderPoint from Accounts where Actype = 'Product'", Con, adOpenStatic, adLockOptimistic

If RS.RecordCount <= 0 Then

Exit Sub

Page 331: Hindustan Zinc Limited

End If

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section1").Controls("txtId").DataField = "AcId"

.Sections("Section1").Controls("TxtName").DataField = "AcTitle"

.Sections("Section1").Controls("txtReOrder").DataField = "ReOrderPoint"

End With

End Sub

10. dataRepSaleByCustomer.Dsr

This report is to display the sales details ordered by customer.

Coding:

Dim mDateQry As String

Dim mTotal As Single

Private Sub DataReport_Initialize()

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewRepSale where AcId = " & Val(FrmRep.TxtLookupCode) & " and SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

Page 332: Hindustan Zinc Limited

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section2").Controls("lblAcId").Caption = Val(FrmRep.TxtLookupCode)

.Sections("Section2").Controls("lblAcTitle").Caption = FrmRep.TxtLookup

.Sections("Section2").Controls("lblDateFrom").Caption = Format(FrmRep.TxtFrom.Value, "dd/mm/yyyy")

.Sections("Section2").Controls("lblDateTo").Caption = Format(FrmRep.TxtTo.Value, "dd/mm/yyyy")

.Sections("Section1").Controls("txtId").DataField = "SaleId"

.Sections("Section1").Controls("txtDate").DataField = "SaleDate"

.Sections("Section1").Controls("txtAcId").DataField = "AcId"

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtAmount").DataField = "TotalAmount"

End With

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(TotalAmount) from ViewRepSale where AcId = " & Val(FrmRep.TxtLookupCode) & " and SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Page 333: Hindustan Zinc Limited

Me.Sections("Section5").Controls("lblTotal").Caption = Val(RS(0))

End Sub

11. dataRepSaleByDate.Dsr

This report is to display the sales details ordered by date.

Coding:

Dim mDateQry As String

Dim mTotal As Single

Private Sub DataReport_Initialize()

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewRepSale where SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section4").Controls("lbldate").Caption = "From " & Format(FrmRep.TxtFrom.Value, "dd/mm/yyyy") & " To " & Format(FrmRep.TxtTo.Value, "dd/mm/yyyy")

.Sections("Section1").Controls("txtId").DataField = "SaleId"

.Sections("Section1").Controls("txtDate").DataField = "SaleDate"

Page 334: Hindustan Zinc Limited

.Sections("Section1").Controls("txtAcId").DataField = "AcId"

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtAmount").DataField = "TotalAmount"

End With

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(TotalAmount) from ViewRepSale where SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblTotal").Caption = Val(RS(0))

End Sub

12. dataRepSaleByProduct.Dsr

This report is to display the sales details by product.

Coding:

Dim mDateQry As String

Private Sub DataReport_Initialize()

mDateQry = " BETWEEN #" & FrmRep.TxtFrom.Value & "# And #" & FrmRep.TxtTo.Value & "#"

Set RS = New ADODB.Recordset

Page 335: Hindustan Zinc Limited

If RS.State = 1 Then RS.Close

RS.Open "Select * from ViewSaleByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section2").Controls("lblProdId").Caption = Val(FrmRep.TxtLookupCode)

.Sections("Section2").Controls("lblProdName").Caption = FrmRep.TxtLookup

.Sections("Section2").Controls("lblDateFrom").Caption = Format(FrmRep.TxtFrom.Value, "dd/mm/yyyy")

.Sections("Section2").Controls("lblDateTo").Caption = Format(FrmRep.TxtTo.Value, "dd/mm/yyyy")

'DETAIL

.Sections("Section1").Controls("txtDate").DataField = "SaleDate"

.Sections("Section1").Controls("txtSaleId").DataField = "SaleId"

.Sections("Section1").Controls("txtAcId").DataField = "AcId"

.Sections("Section1").Controls("txtTitle").DataField = "AcTitle"

.Sections("Section1").Controls("txtQty").DataField = "Qty"

.Sections("Section1").Controls("txtPrice").DataField = "Price"

.Sections("Section1").Controls("txtAmount").DataField = "Amount"

End With

'Total Qty

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

Page 336: Hindustan Zinc Limited

RS.Open "Select Sum(Qty) from ViewSaleByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblTotalQty").Caption = Val(RS(0))

'Avg Price

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select AVG(Price) from ViewSaleByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Me.Sections("Section5").Controls("lblAvgPrice").Caption = Val(RS(0))

'Total Amount

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select Sum(Amount) from ViewSaleByProduct where ProdId = " & Val(FrmRep.TxtLookupCode) & " and SaleDate " & mDateQry, Con, adOpenStatic, adLockOptimistic

If IsNull(RS(0)) Then

Exit Sub

End If

Page 337: Hindustan Zinc Limited

Me.Sections("Section5").Controls("lblTotalAmount").Caption = Val(RS(0))

End Sub

13. dataRepStockStatus.Dsr

This report is to display the status of the stock.

Coding:

Private Sub DataReport_Initialize()

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepStockStatus", Con, adOpenStatic, adLockOptimistic

With Me

Set .DataSource = RS

.DataMember = RS.DataMember

.Sections("Section1").Controls("txtId").DataField = "ProductID"

.Sections("Section1").Controls("txtName").DataField = "ProductName"

.Sections("Section1").Controls("txtStock").DataField = "QtyInStock"

.Sections("Section1").Controls("txtReOrder").DataField = "ReOrderPoint"

End With

End Sub

14. dataTrial Balance.Dsr

This report is to display the trial balance.

Page 338: Hindustan Zinc Limited

Coding:

Private Sub DataReport_Initialize()

Me.Sections("Section4").Controls("LblDate").Caption = "As of " & Format(Date, "dd/mm/yyyy")

'Refreshing RepTrialBalance Table

Set RS = New ADODB.Recordset

If RS.State = 1 Then RS.Close

RS.Open "Select * from RepTrialBalance", Con, adOpenStatic, adLockOptimistic

RS.Requery

Me.Sections("Section5").Controls("LblTotalDr").Caption = Val(TrialDr)

Me.Sections("Section5").Controls("LblTotalCr").Caption = Val(TrialCr)

End Sub

USER INTERFACE

1. Login Screen

20

Page 339: Hindustan Zinc Limited

2. Main Menu

Page 340: Hindustan Zinc Limited

3. Account Creation

Page 341: Hindustan Zinc Limited

4. Purchase Entry

Page 342: Hindustan Zinc Limited

5. Sales Entry

Page 343: Hindustan Zinc Limited

6. Transactions Entry

Page 344: Hindustan Zinc Limited

7. Report Generation Menu

Page 345: Hindustan Zinc Limited

8. Reports

Page 346: Hindustan Zinc Limited
Page 347: Hindustan Zinc Limited
Page 348: Hindustan Zinc Limited
Page 349: Hindustan Zinc Limited
Page 350: Hindustan Zinc Limited