ebilling and invoice system - Printable Version +- Free Academic Seminars And Projects Reports (https://easyreport.in) +-- Forum: Project Ideas And Disscussion (https://easyreport.in/forumdisplay.php?fid=32) +--- Forum: Engineering Project Ideas (https://easyreport.in/forumdisplay.php?fid=33) +---- Forum: Computer Science Project Ideas (https://easyreport.in/forumdisplay.php?fid=36) +---- Thread: ebilling and invoice system (/showthread.php?tid=39336) Pages:
1
2
|
ebilling and invoice system - vikaskanchi - 10-04-2017 [attachment=2776] eBilling and Invoice System OBJECTIVE This project is made for one of the big decorator services in Mumbai, they supply decorating item to film industry for movie shooting. Presently they issue their client handwritten invoice and they enter details in manual register. And maintain MS Excel file for product rate. They want computerization of their manual invoice and bill generation process. The client uses MS Excel, and maintains their product list, customer list, and prints the invoice, however it is not possible them to share the data from multiple system in multi user environment, there is lot of duplicate work, and chance of mistake. When the product price are changed they need to update each and every excel file. There is no option to find and print previous saved invoice. There is no security; any body can access any report and sensitive data, also no reports to find out the sales volume, stock list, and summary report. This eBilling and invoicing system is used to overcome the entire problem which they are facing currently, and making complete atomization of manual billing and invoicing system High Level Solution Architecture User Profiles The following user types are expected for the eBilling and Invoicing System: User Brief Description of Use Actions Sales Representative Downloads and uploads customer and order information, which affects accounting, inventory and product data. View customer and product data as described in metrics, track orders and deliveries. Manager All sales representative use actions, and management reports, quota establishment, reporting and adjustment. Accountant View and print stocks, track orders. Update product details like price. MIS Executive Generate reports, view and print inventory reports, view and print stock reports. Usage Summary eBilling and Invoicing System Version 1.0 will address the following use cases. The complete usage scenarios will be completed during the information-gathering process. Use cases will be created and prioritized. Selected use cases will be expanded into usage scenarios and features that are derived from both use cases and the usage scenarios, as represented in the following diagram: Usage summary use case Requirements Summary The following preliminary lists are based on initial interviews Business Requirements The business goal for the application is to support an increase the productivity and complete automation of existing manual bill and invoice generation process. Business requirements are discussed in the Scope section, with the following additional detail: Sales representatives need a method to store and access sales opportunity data, and when a sale is generated, convert some or all of the information into a sales order without re-entering information. Each sales representative should receive customer and sales data pertinent only to them. The accountant should be able to enter or update product information in one interface only, with all necessary product information being received by sales staff. Manager must receive his or her customer and appointment data plus detailed and rollup information for each sales representative on his or her team. The application should support the capability to use multi user environment. The MIS Executive should able to generate all type of reports as and when required by the management. The sales staff wants to improve their current ability to analyze their customers. In particular, they want to focus on identifying their best customers and building long-term relationships within that base. To enable them to accomplish this goal, they want to extract meaningful data that easily answers the following questions: What are the early warning signs of problems Who are my best customers across product lines With whom do I focus my efforts for building a long-term relationship What are my customers' issues as groups Geographically, where are my best customers What products are my customers buying and at what rate User Requirements User requirements are categorized by user type. Sales Staff (Representatives and Managers) View the data in various ways, for example: o Customers who are the top buyers of specific items o Best customers based on criteria to be determined o Best customers based on geographical analysis o Drops in a customer's sales Store multilingual and multiregional information in the database rather than relying on the sales staff to translate the information Identify which product prices have been modified, especially on current orders in progress Use opportunity rules, which are statements that help the sales representative convert an opportunity into a sale Add third-party data sources and financial evaluation tools Identify where promotions and programs would be the most beneficial Apply discounts to customer orders: o Sales representatives can offer discounts up to 15 percent, or up to 20 percent with authorization. o Sales managers can offer discounts up to 20 percent Enable capture, analysis, and sharing of data about a customer across the company Use forecasts to establish sales goals Allow all staff to view all contacts, but allow each contact to be assigned to a sales representative Accountant Update product details, including price, photo, and description Add, delete, and update product specifications Generate stock reports and check the availability, order the item as and when needed. MIS Executive Generate Reports as per requirement. Share the data, and convert reports to different format like Text, CSV. Operational Requirements The following requirements provide a high-level view of how the system will run: Processor usage should not exceed 80 percent during concurrent uses. Backups will occur incrementally throughout the day. A full weekly backup is required to WORM drives. Ensure that information is easy to access either, and meaningful for the sales representative and the company. Minimize the technical knowledge that sales and marketing staff need to access the data, generate ad hoc queries, track promotions, and view customer segmentation information. Any change to information must be reflected immediately, and the changes must be propagated to the search engine so that employees that perform searches see this new information. The application should work with the existing communications and networking infrastructure. The application should deploy with a minimum of additional operational processes, manual or otherwise. System Requirements These are additional constraints from a system perspective: Previous data of customer, product details must be imported in the new system. The administrator must be able to monitor everything from the IT department. The information must be accessible by everyone in the company as per the rights specify. Success Criteria To determine the success of this project, the following metrics can be quantified and used to analyze success factors. Sales Automation Problem customer identification. Ability to identify top 10 developing problem customers by sales representative. Identification of best customers across product lines and regions. All customers can be sorted by the factors (to be determined) that rank them qualitatively. Variable sorts and rankings can be chosen by the sales representative. Identification of issues across groups. All customers can be sorted by the issues (to be determined) within group categories that can be updated. Variable sorts and rankings can be chosen by the sales representative or other user. Analysis of quantities and rates of products. Products can be sorted by the quantity and dates sold. Variable sorts and rankings can be chosen by the user. Design Goals and Constraints Performance No more than a 5-percent degradation in average query response is allowed while all concurrent user are using the system. Processor utilization should not exceed 80 percent during all concurrent users are using the system. Availability Because the system is accessed by sales representative to book the order and print the invoice, and their should not be any single point of failure. Reliability Because of the need no single point failure, automatic failover will be required. In addition, existing disaster recovery and backup plans and procedures must be revised to incorporate the eBilling and Invoicing System. Scalability eBilling and Invoice System an average load of 50 concurrent users after the system is fully operational, and expects that to grow by 5 percent each year for the next five years. Security For the sensitive customer and order data, all users will need to log on the system with their user id and password. Every resource in the system are defined by the role and privileged. System administrator assigned user role and privileged for their access rights. Interoperability In Version 1.0 of the eBilling and Invoice System, there are no requirements for interoperability with other systems. Location The eBilling and Invoice System are used in the company office only. Setup/Installation Setup and installation must not interrupt the sales staff s daily tasks and work flow. Use Case Summary Manage Orders Description This function will enable sales representative to place orders for eBilling and Invoice System products, track submitted orders, and view completed orders and print the invoice. Business Need This function will enable sales representative to interact with eBilling and Invoice System catalog directly without the intervention of any other employees. Priority High Manage Products Description This function allows user of eBilling and Invoice System to create, maintain, and delete information about products in the product database that can then be viewed and ordered by customers, and accessed and updated by the sales staff. Business Need This function will support the sales staff with accurate and relevant information, and will also support the Manage Orders function by ensuring up-to-date product information. Priority High Manage Contacts Description This function enables the sales staff to create and manage contacts as well as share contact information with the rest of the company. Business Need This function enables user of eBilling and Invoice System to have accurate and up-to-date contact information when working with customers. Priority Medium Analyze Customers Description This function allows management to analyze the customer database and find out information, such as the identities of the best customers, the top buyers, and the most popular products. Business Need This function will allow management to determine the most (and least) profitable customers and product lines, enabling better decision making in the running of the business. Priority Medium Forecast Sales Description This function allows management to plan and track production costs, track sales results, and plan sales staffing needs. Business Need This function will allow management to manage the revenue streams of the organizations and control costs. Priority Medium Establish Sales Goals Description This function allows management to view current sales trends and employee performance and to determine sales goals for the sales staff within the organization. Business Need This function will allow management to set goals for staff, review the performance of staff members, and track employee performance. Priority Medium Usage Scenarios Usage scenarios that describe how users will use the solution within the context of the business, See following usage scenarios. Use Case ID: UC 4.7.1 Retrieve Customer Data Title: UC 04.7.1 Retrieve Customer Data Abbreviated Title: Retrieve Customer Data Requirement ID: 21 Intent Return the selected information about one or more customers. Scenario Narrative A sales representative may want to search for and retrieve information about one or more customers for use in analysis and forecasting activities. Assumptions/Preconditions 1. Sales representative has access rights to view customer data. Actors 1. Sales Representative Basic Course 1. Use case begins when the sales representative decides to retrieve customer information. 2. System prompts for the type of customer information that is required. 3. Sales representative selects the type of customer information to be retrieved. 4. System presents the appropriate customer information to the sales representative. 5. Use case ends when the selected information is passed to a method of delivery. Alternate Course 1. If no appropriate customer information can be found, system reports this fact. 2. Use case restarts to enable sales representative to update the type of customer information. Uses/Extends 1. None User Implementation Requests 1. None Frequency Quite frequent Authority 1. Not applicable Associated Specifications Number Name Category Type Issues 1. None identified Decision Points 1. None Future Requirements 1. The sales representative may want to apply filters to the retrieved data. 2. The sales representative may want to sort the data. For example, the sales representative may want to list the names of customers in chronological order based on the sale date. Modification Date Author Description Use Case Model: Retrieve Customer Data Use Case: Manage Orders Use Case ID: UC 04.7.3 Manage Contacts Title: UC 04.7.2 Manage Contacts Abbreviated Title: Manage Contacts Requirement ID: 19 Intent Enable actor to create, view, modify of the information about customer contacts. Scenario Narrative An actor wants to create view, modify, and delete the customer contacts. Assumptions/Preconditions The actor has rights to access to the eBilling and Invoice System, and having rights to view, ads, edit and delete the customer contacts. Actors Sales Representative Manager Accountant Basic Course: Use case begins when actor decides to search customer. Actor searches the customer. System displays the customer details. Actor view the customer contact details: Actor add, modify the contact details. Uses/Extends 1. None User Implementation Requests 1. None Frequency Frequent Authority 2. Not applicable Associated Specifications Number Name Category Type Issues 2. None Decision Points 2. None Future Requirements 3. None Modification Date Author Description Solution Architecture Infrastructure New servers must be dual processor 1.26 GHz computers, with 1 GB of RAM. The operating system software will be Microsoft Windows 2000 with the latest service pack, although use of Windows Server 2003 will be considered when it is available. These servers will be installed on existing network. To help provide security of the application, both an internal and external firewall will be installed. Visual Design See later on the visual interface design.. Conceptual Design For information about the conceptual design see the use case of previous chapters of the eBilling and Invoice System, Business Rule Catalog of eBilling and Invoice System BR ID Business Rule Title Description Authority Current Process 1 Timely Product Information Adjustments The product information, price in the system must be current 100% of the time. Adjustments to this information must be made at any time. Mr. Ajay Kumar, Accountant. Interview dated May 6, 2008 1. Product is identified by Manager 2. Current information is reviewed and modifications are identified. 3. Accountant notes changes to information and obtains approval from Manager. 4. Accountant makes the changes to the product information. 5. After approval is given by all owners, Accountant saves the changes. 2 Reactivating Deleted Products A product can be "deleted," meaning that it is no longer sold by eBilling and Invoice System. However, the product information should be available in case the product is reactivated at a future time. Mr. Ajay Kumar, Accountant. Interview dated May 6, 2008 1. Product is identified by Manager. 2. Accountant is notified that the product should be removed from the catalog. Notification comes from Manager. 3. Accountant archives product information and saves the information in text and graphics files on an internal business server. 4. If a product is reactivated, the Accountant receives notification from Manager. 5. Accountant creates a new product record in the database and copies the information from the files on the internal business server to the database record. 6. Accountant notifies product information "owners" in Manager to review the new product record. 7. After approval is given by all owners, Accountant makes the product record available to the catalog. 3 Authorization for Catalog Changes No change to product information can be made publicly available without the approval from the information "owners," usually Manager. Mr. Ajay Kumar, Accountant. Interview dated May 6, 2008 Derived from BR1 4 Delivery of Daily Pricing Updates to Sales The Sales force needs to use the most up-to-date information about product pricing and related information, such as availability. Otherwise, sales representatives miss receiving changes that do affect them. This results in the sales representatives having to redo orders and recalculate pricing. Mr. Ajay Kumar, Accountant. Interview dated May 6, 2008 Every morning of every day: 1. Accountant Update the pricing from the vendor. 5 Authorization for Information Access Certain roles have access to certain information types and functions. Current roles include Sales Representative, Sales Manager, Accountant, MIS Executive Mr. Joydeep Das, IT Manager. Interview dated May 12, 2008 1. A suitable authority is requested for creation of a role. 2. The role is created and authorized by the authorization authority. Logical Design EBilling and Invoice System Service Matrix Business Objects Services Actors (Roles) Responsibilities Collaborations Use Case Reference Products Manage Products Sales representative Set filtering information Get price modifications Select a catalog item from catalog item Use Case : Manage Product Sales representative Select a catalog item Get details of catalog item Get product specs None Use Case : Manage Product Sales representative Set address details Get address list Validate address Confirm delivery Set delivery address from order Use Case : Manage Product Sales representative Print product specs None Use Case : Manage Product Sales representative View product specs None Use Case : Manage Product Customer Sales representative View summary information None Use Case : Manage Product Sales representative View detailed information None Use Case : Manage Product Edit Products Accountant Add item to catalog Browse catalog items Set item details from catalog item Use Case : Edit Product Accountant Get editable items Set item details Validate item details Save item details Get details of catalog item from catalog item Use Case : Edit Product Search Products Sales representative Accountant Sales manager List categories Browse to category List catalog items View summary information from catalog item Use Case : Manage Product Sales representative Accountant Sales manager Set search criteria Search catalog None Use Case : Manage Product Order Manage an order Sales representative Set dispatch mechanism Enter dispatch details Validate dispatch details Get details of catalog item from catalog item Use Case : Manage Orders Sales representative Set delivery address None Use Case : Manage Orders Sales representative Search for an order Get order details Set order details Get order details from order Use Case : Manage Orders Sales representative Search for an order Get order details Cancel order Get order details from order Use Case : Manage Orders Sales representative Create Order Set order details Add catalog item to order Set delivery address Set payment details Confirm order Synchronize order with CE device Browse catalog items Use Case : Manage Orders Sales representative Synchronize order with laptop Set customer signature Browse catalog items Use Case : Manage Orders Sales representative Sales manager Apply a discount None Use Case : Manage Orders Track an order Sales representative Get order status None Use Case : Manage Orders Sales representative Search for an order Get order details Set discount amount Validate discount amount Set order details Get details of catalog item from catalog item Use Case : Manage Orders Customer Track a customer Sales representative Get customer details Search for a customer None Use Case : Retrieve Customer Data Physical Design eBilling and Invoice System Physical Object Model Add new product to product master sequence diagram eBilling and Invoice System Data Dictionary Table : product_master Owner: dbo Destination DB name: ebill Number of columns: 5 Number of indexes: 2 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range Sno int Not allowed ProdType nvarchar(60) Not allowed ProdSubType nvarchar(60) Not allowed Rate int Not allowed isactive nvarchar(30) Not allowed Indexes Type Columns PK_ProductMaster_sno clustered, unique, primary key located on PRIMARY sno Table : bill Owner: dbo Destination DB name: ebill Number of columns: 15 Number of indexes: 3 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range sno int Not allowed invoiceno nvarchar(60) Not allowed canme nvarchar(60) Not allowed Invoice_date datetime Not allowed location nvarchar(60) Not allowed chalan_no int Not allowed customer_name nvarchar(100) Not allowed Customer_address1 nvarchar(100) Not allowed Customer_address2 nvarchar(100) Allowed Total_amt int Not allowed discount int Not allowed Amt_words nvarchar(100) Not allowed Paid_type nvarchar(60) Not allowed Cheque_no nvarchar(60) Allowed Entry_date datetime Not allowed Indexes Type Columns PK_Bill_SNO clustered, unique, primary key located on PRIMARY sno IX_bill_cname nonclustered located on PRIMARY cname IX_bill_invoiceno nonclustered, unique located on PRIMARY invoiceno Table : bill_details Owner: dbo Destination DB name: ebill Number of columns: 6 Number of indexes: 3 Number of foreign keys: 2 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range sno int Not allowed Bill_sno int Not allowed Prod_sno nvarchar(60) Not allowed qty datetime Not allowed rate nvarchar(60) Not allowed amt int Not allowed Indexes Type Columns PK_Bill_details_SNO clustered, unique, primary key located on PRIMARY sno IX_bill_details_bill_sno nonclustered located on PRIMARY Bill_sno IX_bill_deatils_prod_sno nonclustered, unique located on PRIMARY Prod_sno Table : Company_master Owner: dbo Destination DB name: ebill Number of columns: 7 Number of indexes: 2 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range Company_name nvarchar(60) Not allowed Address1 nvarchar(100) Not allowed Address2 nvarchar(100) Allowed city nvarchar(60) Not allowed pin int Not allowed telephone nvarchar(60) Not allowed vatno nvarchar(60) Not allowed Indexes Type Columns PK_comapny_master_company_name clustered, unique, primary key located on PRIMARY Comapnay_name IX_ comapny_master_pin nonclustered located on PRIMARY pin Table : user_master Owner: dbo Destination DB name: ebill Number of columns: 3 Number of indexes: 2 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range user_name nvarchar(60) Not allowed User_password nvarchar(60) Not allowed User_type nvarchar(60) Allowed Indexes Type Columns PK_user_master_user_name clustered, unique, primary key located on PRIMARY user_name IX_ user_master_user_type nonclustered located on PRIMARY User_type eBilling and Invoice System Data Schema ER Diagram eBilling and Invoice System DFD (Data Flow Diagram) Form Design and Coding FrmSplash [code](Module to show startup screen) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Splash Screen ' Used Table : NA 'Module to show startup screen '** Option Explicit Dim r As Integer Dim i As Integer Private Sub Form_Load() '>> center the form Me.Left = (Screen.Height - Me.Height) / 2 Me.Top = (Screen.Width - Me.Width) / 2 '>> get a random value to decide how many seconds '>> startup screen should be displayed r = Rnd * 5 + 1 End Sub Private Sub Form_Unload(ByVal Cancel As Integer) '>> release all the references FrmSplash = Nothing End Sub Private Sub Timer1_Timer() '>> check the ellapsed time '>> if the ellapsed time greater then random value '>> stored in form load, stop the timer '>> show main from and close the startup screen i = i + 1 If r >= i Then i = 0 Timer1.Interval = 0 Unload(Me) Load(FrmMain) FrmMain.Show() End If End Sub FrmLogin (Module to Authenticate User) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Login Module ' Used Table : user_master 'Module to check user login and load 'user rights as per user type. '** Option Explicit Dim Rs As New ADODB.Recordset Private Sub Command1_Click() '>> check wheather user name and password are blank '>> if its is blan warn user to enter If TxtUserName.Text = "" Or TxtPassword.Text = "" Then MsgBox("Enter user name and password ..", vbExclamation) TxtUserName.SetFocus() Exit Sub End If '>> check for entered company '>> query to database and if no record found warn user to select company from the list. If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from company_master where company_name='" & CmbCompanyName.Text & "'", Cn, adOpenStatic, adLockReadOnly) If Rs.RecordCount > 0 Then CompanyName = CmbCompanyName.Text Else MsgBox("Select company name from the list", vbExclamation) CmbCompanyName.SetFocus() Exit Sub End If '>> check for username and password '>> query to user_master with user_name and password '>> if no record found check warn user for enter valid user namne and password '>> if record found store user_nmae, user_type in global variable for future use. If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from user_master where USER_name ='" & TxtUserName.Text & "' and user_password ='" & TxtPassword & "'", Cn, adOpenStatic, adLockReadOnly) If Rs.RecordCount > 0 Then CheckLogin = True UserName = IIf(IsNull(Rs("USER_name").Value) = True, "NA", Rs("USER_name").Value) UserType = IIf(IsNull(Rs("user_type").Value) = True, "NA", Rs("user_type").Value) Unload(Me) Else MsgBox("Invalid User Name and Password .. ", vbExclamation, "Login Error ") TxtPassword.Text = "" TxtUserName.SetFocus() Exit Sub End If End Sub Private Sub Command2_Click() '>> close the application End FrmLogin = Nothing End Sub Private Sub Form_Load() '>> open the global connection If Cn.State = 1 Then Cn.Close() OpenCon() '>> center the form Me.Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 '>> fill the combo box with all company_name from company master If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from company_master ", Cn, adOpenStatic, adLockReadOnly) CmbCompanyName.Clear() If Rs.RecordCount > 0 Then While Rs.EOF = False CmbCompanyName.AddItem(Rs("company_name")) Rs.MoveNext() End While End If If Rs.State = adStateOpen Then Rs.Close() End Sub Private Sub Form_QueryUnload(ByVal Cancel As Integer, ByVal UnloadMode As Integer) '>> release all the object variable used by form FrmLogin = Nothing End Sub FrmMain (Give user access to different module) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Main Screen ' Used Table : NA 'Module to show diffrent options '** Option Explicit Private Sub MDIForm_Activate() '>> show the login form as modulas for first time '>> when main form activate first time If CheckLogin = False Then FrmLogin.Show(1) End If LblCompanyName = CompanyName End Sub Private Sub MDIForm_Resize() '>> reposition the picturebox as per form size '>> to display the selected company name Picture1.Left = Me.Width - Picture1.Width - 400 End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) '>> load appropriate form as per user click on toolbar buttons '>> in design time we set key value for each toolbar button If Button.Key = "exit" Then End ElseIf Button.Key = "product_master" Then FrmProducts.Show(1) ElseIf Button.Key = "bill" Then FrmBill.Show(1) ElseIf Button.Key = "utility" Then FrmUtility.Show(1) ElseIf Button.Key = "reports" Then FrmReports.Show(1) ElseIf Button.Key = "company" Then FrmChangeCompany.Show(1) End If End Sub FrmProducts (Maintain Product master) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Maintain Product Master ' Used Table : product_master ' 'Module to allow user to select product 'add/modify product details '** Option Explicit '>> decalre form level valriable Dim Rs As New ADODB.Recordset Dim AddEdit As String Private Sub CmbProductType_Change() '>> as per product type fill the product list Dim QrStr As String If CmbProductType.Text = "ALL" Then QrStr = "select prod_sub_type from product_master order by prod_sub_type" Else QrStr = "select prod_sub_type from product_master where prod_type='" & CmbProductType.Text & "' order by prod_sub_type" End If LstProductSubType.Clear() If Rs.State = adStateOpen Then Rs.Close() Rs.Open(QrStr, Cn, adOpenStatic, adLockReadOnly) While Rs.EOF = False LstProductSubType.AddItem(Rs("prod_sub_type")) Rs.MoveNext() End While '>> select the first product If LstProductSubType.ListCount > 0 Then LstProductSubType.ListIndex = 0 DisplayRecord() End If End Sub Private Sub CmbProductType_Click() '>> call change event CmbProductType_Change() End Sub Private Sub CmdCancel_Click() '>> cancel update ED(False, True) DisplayRecord() End Sub Private Sub CmdClose_Click() '>> close the fron Unload(Me) End Sub Private Sub CmdEdit_Click() '>> set flag to edit ED(True, False) AddEdit = "EDIT" End Sub Private Sub CmdNew_Click() '>> set the flag to add '>> claer text box LblSr.Caption = 0 CmbType.Text = "" TxtName.Text = "" TxtRate.Text = 0 ChkActive.Value = 1 ED(True, False) AddEdit = "ADD" End Sub Private Sub CmdSave_Click() '>> validate the entry If Trim(CmbType.Text) = "" Then MsgBox("Select or Enter product type.", vbExclamation) CmbType.SetFocus() Exit Sub End If If Trim(TxtName.Text) = "" Then MsgBox("Enter product name.", vbExclamation) TxtName.SetFocus() Exit Sub End If If InStr(1, TxtName.Text, Chr(34)) > 0 Then MsgBox("Don't use double qoute in product name.", vbExclamation) TxtName.SetFocus() Exit Sub End If If IsNumeric(TxtRate.Text) = False Then MsgBox("Enter rate, numeric only", vbExclamation) TxtRate.SetFocus() Exit Sub End If '>> check the flag from add/edit If AddEdit = "ADD" Then If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select max(sno) +1 from product_master ", Cn, adOpenStatic, adLockReadOnly) Dim sno As Integer sno = Rs(0) If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from product_master where 1=2", Cn, adOpenDynamic, adLockOptimistic) Rs.AddNew() Rs("sno") = sno Rs("prod_type") = CmbType.Text Rs("prod_sub_type") = TxtName.Text Rs("rate") = Val(TxtRate.Text) Rs("is_active") = Val(ChkActive.Value) Rs.Update() Rs.Close() Else If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from product_master where sno=" & Val(LblSr.Caption), Cn, adOpenDynamic, adLockOptimistic) Rs("prod_type") = CmbType.Text Rs("prod_sub_type") = TxtName.Text Rs("rate") = Val(TxtRate.Text) Rs("is_active") = Val(ChkActive.Value) Rs.Update() Rs.Close() End If '>> dispaly and update lists Dim OldPType As String OldPType = CmbType.Text Dim OldPName As String OldPName = TxtName.Text CmbType.Clear() CmbProductType.Clear() CmbProductType.AddItem("ALL") CmbProductType.Text = OldPType If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select distinct prod_type from product_master order by prod_type", Cn, adOpenStatic, adLockReadOnly) While Rs.EOF = False CmbProductType.AddItem(Rs("prod_type")) CmbType.AddItem(Rs("prod_type")) Rs.MoveNext() End While '>> fill the product list again with updated/inserted records Dim QrStr As String If CmbProductType.Text = "ALL" Then QrStr = "select prod_sub_type from product_master order by prod_sub_type" Else QrStr = "select prod_sub_type from product_master where prod_type='" & CmbProductType.Text & "' order by prod_sub_type" End If LstProductSubType.Clear() If Rs.State = adStateOpen Then Rs.Close() Rs.Open(QrStr, Cn, adOpenStatic, adLockReadOnly) While Rs.EOF = False LstProductSubType.AddItem(Rs("prod_sub_type")) Rs.MoveNext() End While '>> show the first record If LstProductSubType.ListCount > 0 Then LstProductSubType.Text = OldPName DisplayRecord() End If '>> enable/diable button ED(False, True) End Sub Private Sub Form_Load() '>> center the form Me.Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 '>> reset connection OpenCon() ED(False, True) CmbType.Clear() '>> fill the product type CmbProductType.Clear() CmbProductType.AddItem("ALL") CmbProductType.Text = "ALL" If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select distinct prod_type from product_master order by prod_type", Cn, adOpenStatic, adLockReadOnly) While Rs.EOF = False CmbProductType.AddItem(Rs("prod_type")) CmbType.AddItem(Rs("prod_type")) Rs.MoveNext() End While '>> fill the product sub type Dim QrStr As String If CmbProductType.Text = "ALL" Then QrStr = "select prod_sub_type from product_master order by prod_sub_type" Else QrStr = "select prod_sub_type from product_master where prod_type='" & CmbProductType.Text & "' order by prod_sub_type" End If LstProductSubType.Clear() If Rs.State = adStateOpen Then Rs.Close() Rs.Open(QrStr, Cn, adOpenStatic, adLockReadOnly) While Rs.EOF = False LstProductSubType.AddItem(Rs("prod_sub_type")) Rs.MoveNext() End While '>> select the first record If LstProductSubType.ListCount > 0 Then LstProductSubType.ListIndex = 0 DisplayRecord() End If End Sub Private Sub DisplayRecord() '>> display record as per selected product name If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from product_master where prod_sub_type=" & Chr(34) & LstProductSubType.Text & Chr(34), Cn, adOpenStatic, adLockReadOnly) If Rs.RecordCount > 0 Then LblSr.Caption = Rs("sno") CmbType.Text = Rs("prod_type") TxtName.Text = Rs("prod_sub_type") TxtRate.Text = Rs("rate") ChkActive.Value = Rs("is_active") Else LblSr.Caption = "" CmbType.Text = "" TxtName.Text = "" TxtRate.Text = "" ChkActive.Value = 1 End If End Sub Private Sub ED(ByVal T1 As Boolean, ByVal T2 As Boolean) '>> enable/disable button CmdSave.Visible = T1 CmdCancel.Visible = T1 CmdFind.Visible = T2 CmdNew.Visible = T2 CmdEdit.Visible = T2 CmdClose.Visible = T2 CmbType.Locked = T2 TxtName.Locked = T2 TxtRate.Locked = T2 ChkActive.Enabled = T1 End Sub Private Sub LstProductSubType_Click() DisplayRecord() End Sub Private Sub TxtName_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer) '>> SELECT FROM LIST If CmbProductType.Text <> "ALL" Then CmbProductType.Text = "ALL" End If If KeyCode = vbKeyDown Then If LstProductSubType.ListIndex < LstProductSubType.ListCount - 1 Then LstProductSubType.ListIndex = LstProductSubType.ListIndex + 1 End If End If If KeyCode = vbKeyUp Then If LstProductSubType.ListIndex > 0 Then LstProductSubType.ListIndex = LstProductSubType.ListIndex - 1 End If End If End Sub FrmBill (Create and modify bill and print the saved bill) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' New/Modify Bill Module ' Used Table : Bill ' : Bill Details ' : Product ' : Company 'Module to make new or modify bill, 'Print bill after save the record 'also we make editable flexgrid with 'text box and combobox '** Option Explicit '>> declare form global variable Dim AddEdit As String Dim Rs As New ADODB.Recordset Dim sno As Integer Dim SavePrint As String Private Sub CmdClose_Click() '>> check the caption of the button '>> close the form or cancel the save If CmdClose.Caption = "&Close" Then Unload(Me) Else DE(True, False) End If End Sub Private Sub CmdDelete_Click() '>> confirm for deletion of bill '>> if user select YES delete the record from bill and bill_details '>> clear the seleted data from the screen for deleted bill If MsgBox("Record will delete permantley ", vbYesNo + vbCritical) = vbYes Then Cn.Execute("delete from bill_details where bill_sno =" & sno) Cn.Execute("delete from bill where sno =" & sno) AddEdit = "" CmdGetBill.Caption = "&Find" CmdDelete.Enabled = False Call ClearField() If TxtInvoiceNo.Enabled = True Then TxtInvoiceNo.SetFocus() End If End If End Sub Private Sub CmdGetBill_Click() '>> find the bill details '>> find the bill by invoice no AddEdit = "" If CmdGetBill.Caption = "&Get Bill" Then TxtInvoiceNo.Enabled = True Call ClearField() TxtInvoiceNo.BackColor = vbYellow TxtInvoiceNo.SetFocus() CmdGetBill.Caption = "&Find" Else Dim RS1 As New ADODB.Recordset RS1.Open("select * from bill where invoice_no =" & Val(TxtInvoiceNo.Text) & " and cname='" & CompanyName & "'", Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount > 0 Then '>> show details from bill table DtDate.Value = RS1("invoice_date") TxtLocation.Text = RS1("location") TxtChalanNo.Text = RS1("chalan_no") TxtCompany.Text = RS1("customer_name") TxtAddress1.Text = RS1("customer_address1") TxtAddress2.Text = RS1("customer_address2") LblTotalAmount = RS1("total_amt") LblRsWord.Caption = RS1("amt_word") TxtSerial.Text = RS1("serial") '>> show data from bill_details Dim Rs2 As New ADODB.Recordset If Rs2.State = adStateOpen Then Rs2.Close() Dim Rs3 As New ADODB.Recordset Rs2.Open("select * from bill_details where bill_sno=" & RS1("sno") & " order by sno ", Cn, adOpenStatic, adLockReadOnly) If Rs2.RecordCount > 0 Then Dim i As Integer Rs2.MoveFirst() For i = 0 To Rs2.RecordCount - 1 If Rs3.State = adStateOpen Then Rs3.Close() Rs3.Open("select * from product_master where sno =" & Rs2("prod_sno"), Cn, adOpenStatic, adLockReadOnly) If Rs3.RecordCount > 0 Then Mf1.TextMatrix(i + 1, 1) = Rs3("prod_sub_type") End If If Rs3.State = adStateOpen Then Rs3.Close() Mf1.TextMatrix(i + 1, 2) = Rs2("qty") Mf1.TextMatrix(i + 1, 3) = Rs2("rate") Mf1.TextMatrix(i + 1, 4) = Rs2("amt") Rs2.MoveNext() Next End If If Rs2.State = adStateOpen Then Rs2.Close() CmdGetBill.Caption = "&Get Bill" CmdDelete.Enabled = True cmbval.Visible = False CmdPrint.Enabled = True CmdSave.Enabled = True '>> locak the buttons Mf1.Enabled = True cmbval.Enabled = True TXTVAL.Enabled = True TxtCompany.Locked = False TxtAddress1.Locked = False TxtAddress2.Locked = False DtDate.Enabled = True TxtLocation.Locked = False TxtChalanNo.Locked = False Else MsgBox("No Previous Details found for invoice.." & TxtInvoiceNo.Text, vbExclamation) CmdGetBill.Caption = "&Find" TxtInvoiceNo.Enabled = True TxtInvoiceNo.SetFocus() CmdDelete.Enabled = False CmdPrint.Enabled = False CmdSave.Enabled = False Mf1.Enabled = False cmbval.Enabled = False TXTVAL.Enabled = False TxtCompany.Locked = True TxtAddress1.Locked = True TxtAddress2.Locked = True DtDate.Enabled = False TxtLocation.Locked = True TxtChalanNo.Locked = True End If If RS1.State = adStateOpen Then RS1.Close() End If End Sub Private Sub CmdNew_Click() '>> claer the screen for entering data for new bill '>> enable/disable buttons DE(False, True) AddEdit = "ADD" Call ClearField() '>> get the new system id from bill If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select max(sno) from bill ", Cn, adOpenStatic, adLockReadOnly) If Rs.RecordCount > 0 Then sno = IIf(IsNull(Rs(0)) = True, 0, Rs(0)) + 1 End If If Rs.State = adStateOpen Then Rs.Close() TxtCompany.SetFocus() End Sub Private Sub CmdPrint_Click() 'NOTE : it is not the right solution to call crystal report by temp using temp table 'some time it is a good practice for complecated databse relation table 'This may not run properly in multi user environment 'Better approch is passing value by SelectionFormula in crystal report 'but anyway it is a working solution '>> find the bill sno from seleted invoice no '>> if record found '>> delete temp bill na dbill_details '>> insert from bill,bill_details to temp_bill, teemp_bill_details Dim RS1 As New ADODB.Recordset If RS1.State = 1 Then RS1.Close() RS1.Open("select sno from bill where invoice_no=" & Val(TxtInvoiceNo.Text) & " and cname ='" & CompanyName & "'", Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount > 0 Then Cn.Execute("delete from temp_bill_details") Cn.Execute("delete from temp_bill") Cn.Execute("insert into temp_bill select * from bill where sno=" & RS1("sno")) Cn.Execute("insert into temp_bill_details select * from bill_details where bill_sno=" & RS1("sno")) Call OpenCon() '>> call crystal report Cr1.WindowState = crptMaximized Cr1.ReportFileName = App.Path & "\reports\bill.rpt" Cr1.DataFiles(0) = App.Path & "\data.mdb" Cr1.Action = 1 Else MsgBox("No Bill found select/enter invoice no for print", vbExclamation) Exit Sub End If End Sub Private Sub CmdSave_Click() '>> validation '>> check the required field If Trim(TxtCompany.Text) = "" Then MsgBox("Enter Company Name..", vbExclamation) TxtCompany.SetFocus() Exit Sub End If If IsNumeric(TxtInvoiceNo.Text) = False Then MsgBox("Enter only Numeric Invoice No..", vbExclamation) TxtInvoiceNo.SetFocus() Exit Sub End If If Trim(TxtLocation.Text) = "" Then MsgBox("Enter Location..", vbExclamation) TxtLocation.SetFocus() Exit Sub End If If Trim(TxtChalanNo.Text) = "" Then MsgBox("Enter Chalan No..", vbExclamation) TxtChalanNo.SetFocus() Exit Sub End If If IsNumeric(TxtChalanNo.Text) = False Then MsgBox("Enter only Numeric Chalan No..", vbExclamation) TxtChalanNo.SetFocus() Exit Sub End If '>> reset the transaction Call OpenCon() '>> create transaction for insert bill and bil details Cn.BeginTrans() Dim RS1 As New ADODB.Recordset '>> check wheather we need to insert or edit the record '>> if it is edit, then delete the old bill and insert new record If AddEdit <> "ADD" Then If RS1.State = adStateOpen Then RS1.Close() RS1.Open("select * from bill where invoice_no =" & Val(TxtInvoiceNo.Text) & " and cname='" & CompanyName & "'", Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount > 0 Then sno = RS1("sno") End If If RS1.State = adStateOpen Then RS1.Close() Cn.Execute("delete from bill_details where bill_sno =" & sno) Cn.Execute("delete from bill where sno =" & sno) AddEdit = "" End If '>> check for product master '>> check the grid '>> wheather there is a product or not '>> wheater they enter any quantity or not '>> wheatehr there is any price or not '>> if any thing goes wrong show message Dim cc As Integer Dim i As Integer For i = 1 To Mf1.Rows - 1 Dim Ch As Boolean Ch = False If Trim(Mf1.TextMatrix(i, 1)) = "" Then Ch = True End If If RS1.State = adStateOpen Then RS1.Close() RS1.Open("select sno from product_master where prod_sub_type =" & Chr(34) & Mf1.TextMatrix(i, 1) & Chr(34), Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount <= 0 Then Ch = True End If If RS1.State = adStateOpen Then RS1.Close() If Val(Mf1.TextMatrix(i, 2)) = 0 Then Ch = True End If If Val(Mf1.TextMatrix(i, 3)) = 0 Then Ch = True End If If Val(Mf1.TextMatrix(i, 4)) = 0 Then Ch = True End If If Ch = False Then cc = cc + 1 End If Next If cc = 0 Then MsgBox("No Bill details found for save", vbExclamation) Exit Sub End If '>> check for duplicate invoice no If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select * from bill where invoice_no=" & Val(TxtInvoiceNo.Text), Cn, adOpenStatic, adLockReadOnly) If Rs.RecordCount > 0 Then MsgBox("Invalid Invoice No cannot save..", vbExclamation) TxtInvoiceNo.SetFocus() Exit Sub End If If Rs.State = adStateOpen Then Rs.Close() '>> save record in bill table RS1.Open("select * from bill where 1=2", Cn, adOpenDynamic, adLockOptimistic) RS1.AddNew() RS1("sno") = sno RS1("invoice_no") = Val(TxtInvoiceNo.Text) RS1("cname") = CompanyName RS1("invoice_date") = Format(DtDate.Value, "dd-mm-yy") RS1("location") = Trim(TxtLocation.Text) RS1("chalan_no") = Val(TxtChalanNo.Text) RS1("customer_name") = Trim(TxtCompany.Text) RS1("customer_address1") = Trim(TxtAddress1.Text) RS1("customer_address2") = Trim(TxtAddress2.Text) RS1("total_amt") = Val(LblTotalAmount.Caption) RS1("discount") = 0 RS1("amt_word") = LblRsWord RS1("paid_type") = "NA" RS1("cheque_no") = "NA" RS1("entry_date") = Now RS1("serial") = TxtSerial.Text RS1.Update() If RS1.State = 1 Then RS1.Close() '>> vaildate each row before save in details Dim LastSno As Integer Dim ProdSno As Integer Dim Rs2 As New ADODB.Recordset If Rs2.State = 1 Then Rs2.Close() Rs2.Open("select max(sno) from bill_details", Cn, adOpenStatic, adLockReadOnly) If Rs2.RecordCount > 0 Then LastSno = IIf(IsNull(Rs2(0)) = True, 0, Rs2(0)) + 1 End If For i = 1 To Mf1.Rows - 1 Ch = False If Trim(Mf1.TextMatrix(i, 1)) = "" Then Ch = True End If If RS1.State = adStateOpen Then RS1.Close() RS1.Open("select sno from product_master where prod_sub_type =" & Chr(34) & Mf1.TextMatrix(i, 1) & Chr(34), Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount > 0 Then ProdSno = RS1(0) Else Ch = True End If If RS1.State = adStateOpen Then RS1.Close() If Val(Mf1.TextMatrix(i, 2)) = 0 Then Ch = True End If If Val(Mf1.TextMatrix(i, 3)) = 0 Then Ch = True End If If Val(Mf1.TextMatrix(i, 4)) = 0 Then Ch = True End If If Ch = False Then '>> insert in bill details for each validated grid row If Rs2.State = 1 Then Rs2.Close() Rs2.Open("select * from bill_details where 1=2", Cn, adOpenDynamic, adLockOptimistic) Rs2.AddNew() Rs2("sno") = LastSno Rs2("bill_sno") = sno Rs2("prod_sno") = ProdSno Rs2("qty") = Val(Mf1.TextMatrix(i, 2)) Rs2("rate") = Val(Mf1.TextMatrix(i, 3)) Rs2("amt") = Val(Mf1.TextMatrix(i, 4)) Rs2.Update() If Rs2.State = 1 Then Rs2.Close() LastSno = LastSno + 1 End If Next '>> commit the transaction Cn.CommitTrans() MsgBox("Bill Saved", vbInformation) If ChkPrint.Value = 1 Then '>> call the report for print of the saved bill CmdPrint_Click() End If '>> prepare for new bill entry AddEdit = "" Call ClearField() Call CmdNew_Click() End Sub Private Sub DtDate_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer) '>> move the cursor to new field If KeyCode = 13 Then SendKeys("{tab}") End If End Sub Private Sub DtDate_KeyPress(ByVal KeyAscii As Integer) '>> move the cursor to new field If KeyAscii = 13 Then SendKeys("{tab}") End If End Sub Private Sub Form_Load() '>> cnter the form Me.Left = (Screen.Width - Me.Width) / 2 Me.Top = (Screen.Height - Me.Height) / 2 '>> reset connection Call OpenCon() LblCompanyName.Caption = CompanyName DtDate.Value = Now '>> clear the form for new bill entry Call ClearField() '>> enable/diable buttons DE(True, False) '>> load last status for bill print after saved Dim ChkV As Integer ChkV = Val(GetSetting("billsystem", "print", "checkprint", "1")) ChkPrint.Value = ChkV '>> load clent name from the table Rs.Open("select client_name from client_master where client_name is not null order by client_name", Cn, adOpenStatic, adLockReadOnly) While Not Rs.EOF TxtCompany.AddItem(Rs(0)) Rs.MoveNext() End While Picture1.Visible = True End Sub Private Sub DE(ByVal T1 As Boolean, ByVal T2 As Boolean) '>> enable/disable buttons CmdGetBill.Enabled = T1 CmdNew.Enabled = T1 CmdSave.Enabled = T2 CmdPrint.Enabled = T2 TXTVAL.Enabled = T2 cmbval.Enabled = T2 Mf1.Enabled = T2 If T1 = True Then CmdClose.Caption = "&Close" Else CmdClose.Caption = "&Cancel" End If TxtCompany.Locked = T1 TxtAddress1.Locked = T1 TxtAddress2.Locked = T1 DtDate.Enabled = T2 TxtLocation.Locked = T1 TxtChalanNo.Locked = T1 TxtInvoiceNo.BackColor = vbWhite CmdDelete.Enabled = False End Sub Private Sub ClearField() '>> clear the fields TxtCompany.Text = "" TxtAddress1.Text = "" TxtAddress2.Text = "" TxtInvoiceNo.Text = "" TxtLocation.Text = "" LblRsWord.Caption = "" LblTotalAmount.Caption = "" TxtChalanNo.Text = "" TxtSerial.Text = "" '>> for grid edit Call set_heading() Call move_textbox() End Sub Private Sub Form_QueryUnload(ByVal Cancel As Integer, ByVal UnloadMode As Integer) '>> save last status for bill print after saved in the registry If ChkPrint.Value = 1 Then SaveSetting("billsystem", "print", "checkprint", "1") Else SaveSetting("billsystem", "print", "checkprint", "0") End If End Sub Private Sub TxtAddress1_KeyPress(ByVal KeyAscii As Integer) '>> move the focus to next control If KeyAscii = 13 Then SendKeys("{tab}") End If End Sub Private Sub TxtAddress2_KeyPress(ByVal KeyAscii As Integer) '>> move the focus to next control If KeyAscii = 13 Then SendKeys("{tab}") End If End Sub Private Sub TxtChalanNo_KeyPress(ByVal KeyAscii As Integer) '>> move the focus to next control If KeyAscii = 13 Then cmbval.SetFocus() End If End Sub Private Sub TxtCompany_GotFocus() '>> make listbox as editable textbox TxtCompany.Height = 1020 Picture1.Visible = False End Sub Private Sub TxtCompany_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer) '>> show the address of the seleted company Dim RS1 As New ADODB.Recordset If RS1.State = adStateOpen Then RS1.Close() RS1.Open("select * from client_master where client_name='" & TxtCompany.Text & "'", Cn) If RS1.RecordCount > 0 Then TxtAddress1.Text = IIf(IsNull(RS1("address1")) = True, "", RS1("address1")) TxtAddress2.Text = IIf(IsNull(RS1("address2")) = True, "", RS1("address2")) Else TxtAddress1.Text = "" TxtAddress2.Text = "" End If If RS1.State = adStateOpen Then RS1.Close() End Sub Private Sub TxtCompany_KeyPress(ByVal KeyAscii As Integer) '>> move the focus to next control If KeyAscii = 13 Then SendKeys("{tab}") End If End Sub Private Sub TxtCompany_LostFocus() '>> move the focus to next control TxtCompany.Height = 330 Picture1.Visible = True End Sub Private Sub TxtInvoiceNo_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer) '>> call getbill by enter key in invoice no text box If KeyCode = 13 And CmdGetBill.Caption = "&Find" Then CmdGetBill_Click() End If End Sub Private Sub TxtLocation_KeyPress(ByVal KeyAscii As Integer) '>> move the focus to next control If KeyAscii = 13 Then SendKeys("{tab}") End If End Sub Private Sub TxtSerial_KeyPress(ByVal KeyAscii As Integer) '>> move the focus to next control If KeyAscii = 13 Then SendKeys("{tab}") End If End Sub Private Sub TXTVAL_KeyPress(ByVal KeyAscii As Integer) '>> make flex gird editable move th textbox in gid cell for entering value '>> check wheathe we press enter key '>> if yes..move the control to next grod Dim t As Integer If KeyAscii = 13 And Mf1.Col = 2 Then If IsNumeric(TXTVAL.Text) = False Then KeyAscii = 0 Exit Sub End If Mf1.Text = TXTVAL.Text '>> show total Mf1.TextMatrix(Mf1.Row, Mf1.Col + 2) = Val(Mf1.TextMatrix(Mf1.Row, Mf1.Col + 1)) * TXTVAL.Text Dim x As Integer Dim T1 As Double For x = 1 To Mf1.Rows - 1 T1 = T1 + Val(Mf1.TextMatrix(x, 4)) Next LblTotalAmount.Caption = T1 LblRsWord = RsWord(LblTotalAmount.Caption) If Mf1.Col <> Mf1.Cols - 3 Then Mf1.Col = Mf1.Col + 1 Else If Mf1.Row <> Mf1.Rows - 2 Then '>> go to next row Mf1.Row = Mf1.Row + 1 Else '>> add new rows Mf1.Rows = Mf1.Rows + 1 '>> set the current row Mf1.Row = Mf1.Row + 1 '>> set sr no Mf1.TextMatrix(Mf1.Row, 0) = Val(Mf1.TextMatrix(Mf1.Row - 1, 0)) + 1 End If Mf1.Col = 1 End If move_textbox() '>> select the text in text box TXTVAL.SelStart = 0 TXTVAL.SelLength = Len(TXTVAL.Text) End If End Sub Private Sub cmbval_KeyPress(ByVal KeyAscii As Integer) '>> make flex gird editable move th combobox in gid cell for seleting value '>> check wheathe we press enter key '>> if yes..move the control to next grod Dim t As Integer If KeyAscii = 13 Then '>> find prod rate Dim RS1 As New ADODB.Recordset If RS1.State = adStateOpen Then RS1.Close() RS1.Open("select * from product_master where prod_sub_type=" & Chr(34) & cmbval.Text & Chr(34), Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount > 0 Then Mf1.TextMatrix(Mf1.Row, Mf1.Col + 2) = RS1("rate") Else KeyAscii = 0 Exit Sub End If Mf1.Text = cmbval.Text '>> show total Mf1.TextMatrix(Mf1.Row, 4) = Val(Mf1.TextMatrix(Mf1.Row, 2)) * Val(Mf1.TextMatrix(Mf1.Row, 3)) Dim x As Integer Dim T1 As Double For x = 1 To Mf1.Rows - 1 T1 = T1 + Val(Mf1.TextMatrix(x, 4)) Next LblTotalAmount.Caption = T1 LblRsWord = RsWord(LblTotalAmount.Caption) If Mf1.Col <> Mf1.Cols - 2 Then Mf1.Col = Mf1.Col + 1 Else If Mf1.Row <> Mf1.Rows - 1 Then Mf1.Row = Mf1.Row + 1 Else '>> add new rows Mf1.Rows = Mf1.Rows + 1 '>> set the current row Mf1.Row = Mf1.Row + 1 '>> set sr no Mf1.TextMatrix(Mf1.Row, 0) = Val(Mf1.TextMatrix(Mf1.Row - 1, 0)) + 1 End If Mf1.Col = 1 End If move_textbox() cmbval.SelStart = 0 cmbval.SelLength = Len(cmbval.Text) End If End Sub Public Sub set_heading() '>> creating for the grid Dim K As Integer Dim t As Integer Mf1.Clear() Mf1.Refresh() Mf1.Rows = 30 Mf1.Cols = 5 Mf1.Row = 0 Mf1.RowHeight(0) = 600 Mf1.Col = 0 Mf1.ColWidth(0) = 1000 Mf1.CellForeColor = vbBlue Mf1.CellFontBold = True Mf1.CellAlignment = 4 Mf1.Text = "Sr." Mf1.Col = 1 Mf1.ColWidth(1) = 4200 Mf1.CellForeColor = vbBlue Mf1.CellFontBold = True Mf1.CellAlignment = 4 Mf1.Text = "Particulars" Mf1.Col = 2 Mf1.ColWidth(2) = 1200 Mf1.CellForeColor = vbBlue Mf1.CellFontBold = True Mf1.CellAlignment = 4 Mf1.Text = "Quantity" Mf1.Col = 3 Mf1.ColWidth(3) = 1200 Mf1.CellForeColor = vbBlue Mf1.CellFontBold = True Mf1.CellAlignment = 4 Mf1.Text = "Rate" Mf1.Col = 4 Mf1.ColWidth(4) = 1200 Mf1.CellForeColor = vbBlue Mf1.CellFontBold = True Mf1.CellAlignment = 4 Mf1.Text = "Amount" Mf1.TextMatrix(1, 0) = "1" Mf1.Row = 0 For K = 0 To Mf1.Cols - 1 Mf1.Col = K Mf1.CellFontBold = True Next Mf1.Row = 1 Mf1.Col = 1 '>> set serial from 1.2.. For K = 1 To Mf1.Rows - 1 Mf1.TextMatrix(K, 0) = K Next Mf1.Row = 1 End Sub Private Sub MF1_EnterCell() '>> call appropriate control for edit the grid If Mf1.Col = 1 Then '>> visble combo box for select product cmbval.Visible = True TXTVAL.Visible = False If cmbval.Visible = True Then If cmbval.Enabled = True Then cmbval.SetFocus() End If End If cmbval.Clear() Dim Rs As New ADODB.Recordset If Rs.State = 1 Then Rs.Close() '>>Fill item If Mf1.Col = 1 Then Rs.Open("select prod_sub_type from product_master order by prod_sub_type", Cn, adOpenStatic, adLockReadOnly) While Not Rs.EOF cmbval.AddItem(Rs(0)) Rs.MoveNext() End While ElseIf Mf1.Col = 3 Then cmbval.AddItem("") End If Else '>> visble text box for entring quantity cmbval.Visible = False TXTVAL.Visible = True If TXTVAL.Visible = True Then If TXTVAL.Enabled = True Then TXTVAL.SetFocus() End If End If End If Call move_textbox() End Sub Public Sub move_textbox() '>>align textbox as per grid cell and set text TXTVAL.Left = Mf1.CellLeft + Mf1.Left TXTVAL.Top = Mf1.CellTop + Mf1.Top TXTVAL.Width = Mf1.CellWidth TXTVAL.Height = Mf1.CellHeight TXTVAL.Text = Mf1.Text '>>align combo box as per grid cell and set text cmbval.Left = Mf1.CellLeft + Mf1.Left cmbval.Top = Mf1.CellTop + Mf1.Top cmbval.Width = Mf1.CellWidth cmbval.Text = Mf1.Text End Sub (Print out of the bill) FrmReports (Show Different Report Options) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Show report options ' ' 'allow user to select diffrent report '** Option Explicit Private Sub CmdBillSummary_Click() '>> show bill summary FrmBillSummary.Show(1) End Sub Private Sub CmdClose_Click() '>> cloase the form Unload(Me) End Sub Private Sub CmdExport_Click() '>> show export product form FrmExportData.Show(1) End Sub Private Sub CmdPrintBill_Click() '>> show print bill FrmPrintBill.Show(1) End Sub Private Sub CmdProductSummary_Click() '>> show all product list report Cr1.WindowState = crptMaximized Cr1.ReportFileName = App.Path & "\reports\products.rpt" Cr1.DataFiles(0) = App.Path & "\data.mdb" Cr1.Action = 1 End Sub Private Sub Form_Load() '>> center the form Me.Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 End Sub FrmPrintBill (Print already saved bill) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Print already saved bill ' Used Table : bill ' : bill_details 'Module to allow user to select the invoice 'no from seleted date range 'and open the bill by its invoice/bill no '** Option Explicit Dim Rs As New ADODB.Recordset Private Sub CmdClose_Click() '>> close the bill Unload(Me) End Sub Private Sub CmdGetBill_Click() '>> get bill no as per selected date range '>> fill the list box from record set LstInvoiceNo.Clear() If Rs.State = adStateOpen Then Rs.Close() Rs.Open("select invoice_no from bill where invoice_date>=#" & Format(DTPicker1.Value, "dd-mm-yy") & "# and invoice_date<=#" & Format(DTPicker2.Value, "dd-mm-yy") & "# and cname='" & CompanyName & "' order by invoice_no", Cn, adOpenStatic, adLockReadOnly) While Rs.EOF = False LstInvoiceNo.AddItem(Rs(0)) Rs.MoveNext() End While End Sub Private Sub CmdShowBill_Click() '>> get teh bill details from bill table as per selected bill no If LstInvoiceNo.ListIndex < 0 Then Exit Sub Dim RS1 As New ADODB.Recordset If RS1.State = 1 Then RS1.Close() RS1.Open("select sno from bill where invoice_no=" & Val(LstInvoiceNo.Text) & " and cname ='" & CompanyName & "'", Cn, adOpenStatic, adLockReadOnly) If RS1.RecordCount > 0 Then '>> delete old data from temp table and insert from bill, bill_deatils table Cn.Execute("delete from temp_bill_details") Cn.Execute("delete from temp_bill") Cn.Execute("insert into temp_bill select * from bill where sno=" & RS1("sno")) Cn.Execute("insert into temp_bill_details select * from bill_details where bill_sno=" & RS1("sno")) '>> reset the connection Call OpenCon() '>> open the crystal report Cr1.DataFiles(0) = App.Path & "\data.mdb" Cr1.WindowState = crptMaximized Cr1.ReportFileName = App.Path & "\reports\bill.rpt" Cr1.Action = 1 Else MsgBox("No Bill found select/enter invoice no for print", vbExclamation) Exit Sub End If End Sub Private Sub Form_Load() '>> center form Me.Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 LstInvoiceNo.Clear() '>> set datepicker to current date DTPicker1.Value = Date DTPicker2.Value = Date '>> reset connection Call OpenCon() End Sub ProductSummary Report (Show Product Summary report in crystal report) FrmBillSummary (Show bill summary for particular date range) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Show summery of bill ' Used Table : bill ' : bill_details 'show bill summary for seleted date 'range, show report in crystal report 'move data into temp table and show 'report from temp table '** Option Explicit Private Sub CmdClose_Click() '>> close the form Unload(Me) End Sub Private Sub CmdGetBill_Click() 'NOTE : it is not the right solution to call crystal report by temp using temp table 'some time it is a good practice for complecated databse relation table 'This may not run properly in multi user environment 'Better approch is passing value by SelectionFormula in crystal report 'but anyway it is a working solution '>> find the bill sno from seleted invoice no '>> if record found '>> delete temp bill na dbill_details '>> insert from bill,bill_details to temp_bill, teemp_bill_details Cn.Execute("delete from temp_bill_details") Cn.Execute("delete from temp_bill") Cn.Execute("insert into temp_bill select * from bill where invoice_date>=#" & Format(DTPicker1.Value, "dd-mm-yy") & "# and invoice_date<=#" & Format(DTPicker2.Value, "dd-mm-yy") & "# and cname='" & CompanyName & "' ") Cn.Execute("insert into temp_bill_details select * from bill_details where bill_sno in ( select sno from bill where invoice_date >=#" & Format(DTPicker1.Value, "dd-mm-yy") & "# and invoice_date<=#" & Format(DTPicker2.Value, "dd-mm-yy") & "# and cname='" & CompanyName & "')") Call OpenCon() '>> open crystal report Cr1.DataFiles(0) = App.Path & "\data.mdb" Cr1.WindowState = crptMaximized Cr1.ReportFileName = App.Path & "\reports\billsummary.rpt" Cr1.Action = 1 End Sub Private Sub Form_Load() '>> cnter the form Me.Left = (Screen.Width - Me.Width) / 2 Me.Top = (Screen.Height - Me.Height) / 2 '>> show the current date DTPicker1.Value = Date DTPicker2.Value = Date End Sub Bill Summary Report FrmExportData (Export product Data in FlexGrid and MS-Excel with formatting) '** ' eBilling System ' Version 1.0.0 ' Created by Mr. Atanu Maity ' Date : 21-Aug-2006 '** ' Export product_master in grid and ms-excel ' Used Table : product_master 'open the pro ebilling and invoice system - sri seri - 10-04-2017 [attachment=3321] [attachment=3320] Project Synopsis EBILLING AND INVOICE SYSTEM 1 PROJECT SYNOPSIS 1 REVISION & SIGN-OFF SHEET 2 VISION STATEMENT 1 OPPORTUNITY STATEMENT 1 SCOPE 1 CUSTOMER, PRODUCTS, BILLING GENERATION 1 REPORT GENERATION SYSTEM 2 OUT OF SCOPE 2 GOAL 3 SOLUTION CONCEPT 3 USER PROFILES 5 USAGE SUMMARY 5 REQUIREMENTS SUMMARY 7 Business Requirements 7 User Requirements 7 Operational Requirements 8 System Requirements 9 SUCCESS CRITERIA 9 Sales Automation 9 FEATURES/FUNCTIONALITY 10 USE CASES SUMMARY 12 SOFTWARE AND HARDWARE REQUIREMENT 13 General Requirement for Server/Client: 13 DEVELOPMENT TOOLS AND TECHNOLOGIES 13 DEVELOPMENT TOOLS AND TECHNOLOGIES 14 FRONT END 14 BACK END 14 DEVELOPMENT ENVIRONMENT 15 VISUAL DESIGN 16 CONCEPTUAL DESIGN 16 LOGICAL DESIGN 18 PHYSICAL DESIGN 21 EBILLING AND INVOICE SYSTEM DATA DICTIONARY 22 EBILLING AND INVOICE SYSTEM DATA DICTIONARY 23 TABLE : PRODUCT_MASTER 23 TABLE : BILL 23 TABLE : BILL_DETAILS 24 TABLE : COMPANY_MASTER 24 TABLE : USER_MASTER 25 EBILLING AND INVOICE SYSTEM DATA SCHEMA ER DIAGRAM 26 EBILLING AND INVOICE SYSTEM DFD (DATA FLOW DIAGRAM) 27 Introduction The client uses MS Excel, and maintains their product list, customer list, and prints the invoice, however it is not possible them to share the data from multiple system in multi user environment, there is lot of duplicate work, and chance of mistake. When the product price are changed they need to update each and every excel file. There is no option to find and print previous saved invoice. There is no security; any body can access any report and sensitive data, also no reports to find out the sales volume, stock list, and summary report. This eBilling and invoicing system is used to overcome the entire problem which they are facing currently, and making complete atomization of manual billing and invoicing system Objective This section presents a conceptual overview of the solution, and then provides an introduction to its requirements. Solution Concept The eBilling and Invoice System consists of: Customer, Products, Billing Generation: Automate the current manual bill generation system and maintain the searchable customer, products database and product invoice, maintain the data security, user rights. Report Generation: A Report Generation system will be developed for the user and management of eBilling and Invoicing System. This MIS system will have both details and summary type reports for analysis the sales volume, sales trend, available stock Part of the solution will involve converting data from Microsoft Excel to the Database, system can import existing customer, product data from predefined MS Excel, CSV format. It reduces the data entry work and quick implementation of the system. The following diagram describes the proposed solution architecture at a high level. High Level Solution Architecture User Profiles The following user types are expected for the eBilling and Invoicing System: User Brief Description of Use Actions Sales Representative Downloads and uploads customer and order information, which affects accounting, inventory and product data. View customer and product data as described in metrics, track orders and deliveries. Manager All sales representative use actions, and management reports, quota establishment, reporting and adjustment. Accountant View and print stocks, track orders. Update product details like price. MIS Executive Generate reports, view and print inventory reports, view and print stock reports. Usage Summary eBilling and Invoicing System Version 1.0 will address the following use cases. The complete usage scenarios will be completed during the information-gathering process. Use cases will be created and prioritized. Selected use cases will be expanded into usage scenarios and features that are derived from both use cases and the usage scenarios, as represented in the following diagram: Usage summary use case Features/Functionality The following sections summarize features and functionality described by use case. Please see bellow eBilling and Invoice System Requirements Manage Customers - Analyze Customers Must be able to analyze customer data Must be able to sort customers Must be able to sort customers by amount of sales Must be able to sort customers by amount of sales of particular products Must be able to identify sales trends Must be able to identify drops in sales Must be able to identify drops in a customer's sales Manage Orders Sales representatives must be able to offer discount in an order Must be able to create, track, revise, and cancel orders Must be able to create an order Must be able to track an order Must be able to revise an order Must be able to cancel an order Manage Products (Catalog, Categories) Must be able to browse products Must be able to browse products by category Must be able to add a new product Must be able to edit an existing product Customers must be able to search the database Customers must be able to search the database by product type customers must be able to search the database by product The system must have the capability to provide help Manage Users Must be able to record information about users Must be able to search for employee information Must be able to track information for each employee Must be able to add/ modify user information User can change his/ her password Must be specify the user rights and privilege Management Information System / MIS Reports All users from all departments must be able to see reports from a central database as per their rights and privileges All reports can be exported in different formats like Text, CSV, Ms Excel System should store historical data. System Should have automated backup procedure for disaster Network Management Must be able to monitor the network centrally Must be able to monitor servers centrally Must be able to monitor application server software centrally Must be able to monitor databases centrally CEO Requirements To extend our product availability (Looks more like a business goal than a definable requirement.) Providing a no single point failure application (Looks more like a business goal than a definable requirement.) Reduce our costs by lowering customer handle time (Looks more like a business goal than a definable requirement.) Need to improve our sales volume (Looks more like a business goal than a definable requirement.) Use Cases Summary Software and Hardware Requirement General Requirement for Server/Client: Type Software Hardware Work Station/ Node 1. Windows XP 2. VB Run time 3. MS Office 1. P-4 2. RAM -256 MB Database Server 1.Win2000 Advance Server 1.P-4 2.RAM- 2GB 3.Hard Disk-160GB 4.RAID Application Server 1.Win 2000 Advance Server 1.P-4 2.RAM- 1GB 3.Hard Disk-40GB Development Tools and Technologies Front End 1. VB 6 Why VB6? VB6 is built on the Windows Server System to take major advantage of the OS and which comes with a host of different servers which allows for building, deploying, managing and maintaining Windows Based solutions. The Windows Server System is designed with performance as priority and it provides scalability, reliability. The advantage of VB.NET includes Rapid Application Development (RAD) Support. Powerful Windows-based Applications Simplified Deployment Powerful, Flexible, Simplified Data Access Improved Coding Direct Access to the OS Platform Object-Oriented Constructs COM Interoperability Back End 1. MS Access Why MS Access? MS Access is desktop RDMS support small application with all features like relational query, different data types, joins, and query. Includes Easy to use and easy to deployment. Integration with Windows OS Scalability Import and Export of data in all major database system. Centralized Management Reliability Automating Tasks Development Environment 1. Visual Studio 6.0 eBilling and Invoice System Data Dictionary Table : product_master Owner: dbo Destination DB name: ebill Number of columns: 5 Number of indexes: 2 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range Sno int Not allowed ProdType nvarchar(60) Not allowed ProdSubType nvarchar(60) Not allowed Rate int Not allowed isactive nvarchar(30) Not allowed Indexes Type Columns PK_ProductMaster_sno clustered, unique, primary key located on PRIMARY sno Table : bill Owner: dbo Destination DB name: ebill Number of columns: 15 Number of indexes: 3 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range sno int Not allowed invoiceno nvarchar(60) Not allowed canme nvarchar(60) Not allowed Invoice_date datetime Not allowed location nvarchar(60) Not allowed chalan_no int Not allowed customer_name nvarchar(100) Not allowed Customer_address1 nvarchar(100) Not allowed Customer_address2 nvarchar(100) Allowed Total_amt int Not allowed discount int Not allowed Amt_words nvarchar(100) Not allowed Paid_type nvarchar(60) Not allowed Cheque_no nvarchar(60) Allowed Entry_date datetime Not allowed Table : bill_details Owner: dbo Destination DB name: ebill Number of columns: 6 Number of indexes: 3 Number of foreign keys: 2 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range sno int Not allowed Bill_sno int Not allowed Prod_sno nvarchar(60) Not allowed qty datetime Not allowed rate nvarchar(60) Not allowed amt int Not allowed Table : Company_master Owner: dbo Destination DB name: ebill Number of columns: 7 Number of indexes: 2 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range Company_name nvarchar(60) Not allowed Address1 nvarchar(100) Not allowed Address2 nvarchar(100) Allowed city nvarchar(60) Not allowed pin int Not allowed telephone nvarchar(60) Not allowed vatno nvarchar(60) Not allowed Table : user_master Owner: dbo Destination DB name: ebill Number of columns: 3 Number of indexes: 2 Number of foreign keys: 0 Extended attributes: OnFileGroup PRIMARY Clustered PK Yes Columns Data type Allow NULLs Value/range user_name nvarchar(60) Not allowed User_password nvarchar(60) Not allowed User_type nvarchar(60) Allowed eBilling and Invoice System Data Schema ER Diagram ebilling and invoice system - rainuss - 10-04-2017 eBilling and Invoice System eBilling and Invoice System is a live project written in Visual Basic 6 programming language. It is a working solution. I give you complete project listing with all project file, source code, database, crystal reports. You can use this project as you want. I am not claim any copyright for this project. You can free download all the project documentation, project source code, project executable files, database from download link. Code are well commented for your reference, however if you want any clarification you can contact me for further explanation. http://ziddudownload/5388226/eBilling-and-Invoice-System.zip.html ebilling and invoice system - initlinux - 10-04-2017 to get information about the topic ebilling and invoice system full report ppt and related topic refer the page link bellow http://seminarsprojects.net/Thread-ebilling-and-invoice-system http://seminarsprojects.net/Thread-e-billing-and-invoice-system http://seminarsprojects.net/Thread-ebilling-and-invoice-system?page=2 http://seminarsprojects.net/Thread-e-billing-and-invoice-system?pid=52577#pid52577 ebilling and invoice system - arunbabuktkm - 10-04-2017 to get information about the topic ebilling and invoice system full report ppt and related topic refer the page link bellow http://seminarsprojects.net/Thread-ebilling-and-invoice-system http://seminarsprojects.net/Thread-e-billing-and-invoice-system http://seminarsprojects.net/Thread-ebilling-and-invoice-system?page=2 http://seminarsprojects.net/Thread-e-billing-and-invoice-system?pid=52577#pid52577 ebilling and invoice system - ranjith456 - 10-04-2017 To get full information or details of ebilling and invoice system please have a look on the pages http://seminarsprojects.net/Thread-ebilling-and-invoice-system--31379 if you again feel trouble on ebilling and invoice system please reply in that page and ask specific fields in ebilling and invoice system ebilling and invoice system - jeena985 - 10-04-2017 Hi can u check there is an error in the project while in u click report in the project the error is " Run-time error '339': Component 'CRYSTL32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid " ebilling and invoice system - jayanjadavedas - 10-04-2017 To get more information about the topic "e-billing and invoice system " please refer the page link below http://seminarsprojects.net/Thread-ebilling-and-invoice-system http://seminarsprojects.net/Thread-e-billing-and-invoice-system ebilling and invoice system - habi - 10-04-2017 Somebody posted about the error on missing CRYSTL32.OCX or component not registered. for this, download the CRYSTL32.OCX file from the internet and then register the file using regsvr. ebilling and invoice system - aqua_lies - 10-04-2017 dude i have errors in that bill section and report section compile errors so pls clarify that da |