#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
# include <iostream>
# include <dos>
# include <ctype>
# include <windows>
#include <time>
#include <fstream>
FILE *fp;
FILE *fp1;
struct inven{
char codigo[10];
char descrip[30];
char exist[15];
char preuni[5];
}inventario;
// === funciones ===
void crear();
void salir();
void menu();
void producto();
void anexar();
void modificar();
void eliminar();
void reporte();
// === funciones factura ===
void registrar_productos(int nv, int np);
// ---44444444444444444444444444 PROGRAMA factura 444444444444444444444444----------------------------
#define MAXCAD 50
#define MAX_V 1000
#define MAX_PV 100 // maximo de productos vendidos
time_t t = time(0); // get time now
struct tm * now = localtime( & t );
void unidades_en_letra(unsigned long cantidad);
void millares_en_letra(unsigned long cantidad);
void millones_en_letra(unsigned long cantidad);
const char *unidades[] = {NULL,"Uno","Dos", "Tres", "Cuatro","Cinco","Seis","Siete","Ocho","Nueve"};
const char *decimas[] = {NULL,"Dies","Veinte","Treinta","Cuarenta","Cincuenta","Sesenta","Setenta","Ochenta","Noventa"};
const char *diez_y[] = {NULL,"Once","Doce","Trece","Tatorce","Quience"};
const char *centenas[] = {NULL,"Ciento",NULL,NULL,NULL,"Quinientos",NULL,"Setecientos",NULL,"Novecientos"};
struct unProducto {
char name_prod[MAXCAD]; // nombre del producto
int cantidad;
int precio ;
int subtotal;
};
struct variosProductos {
int numProd ; // numero de productos
unProducto vp[MAX_PV]; //varios productos cada uno en una posicion del vector
int precioTotal ;
};
struct Vendedor {
char nombre[MAXCAD] ;
char apellido[MAXCAD] ;
char direccion[MAXCAD];
int DNI ;
variosProductos P ;
};
struct Vendedor lista[MAX_V]; // creamos un array de
struct Vendedor aux;
void registrar_productos(int nv, int np){
{
// nv -> numero
unsigned long cantidad;
int ti,tt,iva;
gotoxy(4,6); cout<<"Cantidad";
gotoxy(18,6);cout<<"Descripcion" ;
gotoxy(66,6);cout<<"Precio";
for(int i=0; i<np; i++)
{
gotoxy(4,8+i);cin>> lista[nv].P.vp[i].cantidad ;
cin.ignore();
gotoxy(18,8+i);cin.getline( lista[nv].P.vp[i].name_prod, MAXCAD );
gotoxy(66,8+i);cin>> lista[nv].P.vp[i].precio ;
lista[nv].P.vp[i].subtotal = lista[nv].P.vp[i].cantidad * lista[nv].P.vp[i].precio ; // subtotal
if(lista[nv].P.vp[i].subtotal==0)
lista[nv].P.precioTotal = lista[nv].P.precioTotal + lista[nv].P.vp[i].subtotal ;
}
ti=0;
tt=0;
iva=0;
for(int i=0; i<np; i++){
ti=(ti+(lista[nv].P.vp[i].cantidad*lista[nv].P.vp[i].precio));
}
iva=(ti*0.12);
tt=(ti - iva);
cantidad=ti;
gotoxy(30,18);cout<<"Total Sin Impuesto";
gotoxy(66,18);cout<<tt;
gotoxy(30,19);cout<<"Impuesto 12%";
gotoxy(66,19);cout<<iva;
gotoxy(36,21);cout<<"Total";
gotoxy(66,21);cout<<ti;
gotoxy(5,23);cout<<"En Letreas:";
gotoxy(18,23);millones_en_letra(cantidad);
cout<<" Quetzales";
getch();
}
}
void registrar_vendedores(int n)
{
for(int i=0; i<n; i++)
{
clrscr();
cout<<" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»";
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl;
cout<<" º º º º"<<endl;
cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl;
cout<<" º º º º"<<endl;
cout<<" º º º º"<<endl;
cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl;
cout<<" º º º º"<<endl;
cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl;
cout<<" º º"<<endl;
cout<<" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"<<endl;
cin.ignore(); gotoxy(4,2);cout << " Nombres : "; cin.getline( lista[i].nombre, MAXCAD );
gotoxy(25,2);cout << " Apellidos : "; cin.getline( lista[i].apellido, MAXCAD );
gotoxy(4,3); cout << " N I T : "; cin>>lista[i].DNI;
gotoxy(25,3); cout<<"> Numero de productos: "; cin>> lista[i].P.numProd ;
cin.ignore(); gotoxy(4,4); cout << " Dir : "; cin.getline( lista[i].direccion, MAXCAD);
gotoxy (27,4);cout << "Fecha: " <<(now->tm_mday ) << '/' << (now->tm_mon +1)
<< '/' << (now->tm_year +1900);
registrar_productos( i ,lista[i].P.numProd );
}
}
void datosVendedor(int x)
{
ifstream salida;
salida.open("empleados.txt",ios::in);
if(salida.fail())
{
cout<<"ocurrio un error al abrir el archivo";
getch();
}
else
{
salida>>lista[x].nombre;
} {
cout<<endl<<endl;
cout <<" Nombre : " << lista[x].nombre <<' '<< lista[x].apellido << endl;
cout<< " Productos vendidos:"<<lista[x].P.numProd<< endl;
cout << " N I T : "<< lista[x].DNI << endl;
cout << " Direccion: "<< lista[x].direccion << endl;
cout << " fecha: "<<(now->tm_mday ) << '/' << (now->tm_mon +1)<< '/' << (now->tm_year +1900)<<endl;
}
}
void prodVendedor(int x, int num)
{
int ti;
if(num>0)
{
cout<<endl<<endl;
cout << " Productos de " << lista[x].nombre <<' '<< lista[x].apellido << endl<<endl;
for(int i=0; i<lista[x].P.numProd; i++)
{
cout<<"\n Producto "<< (i+1) <<endl;
cout<<"\tNombre : " << lista[x].P.vp[i].name_prod <<endl;
cout<<"\tCantidad: " << lista[x].P.vp[i].cantidad <<endl;
cout<<"\tPrecio : " << lista[x].P.vp[i].precio <<endl;
cout<<"\tSubtotal: " << lista[x].P.vp[i].subtotal <<endl ;
ti=(ti+(lista[x].P.vp[i].cantidad*lista[x].P.vp[i].precio));
}
cout<<endl;
cout<<" ---------------------------"<<endl;
cout<<" PRECIO TOTAL: "<< (ti-1);
}
else
cout<<"\n\tRegistro vacio..!";
}
void mostrar_productos(int nv)
{
cout<<" Productos: \n\n";
cout<<"\t";
cout<<"Cantidad";
cout<<"\t";
cout<<"Descripcion";
cout<<"\t\t\t\t";
cout<<"Precio";
cout<<endl;
for(int i=0; i<lista[nv].P.numProd; i++)
{
cout<<"\t";
cout<<lista[nv].P.vp[i].cantidad;
cout<<"\t\t";
cout<<lista[nv].P.vp[i].name_prod;
cout<<"\t\t\t\t";
cout<<lista[nv].P.vp[i].precio<<endl;
}
}
void mostrar_vendedores(int num)
{ for(int i=0; i<num; i++)
if( num>0)
{
cout<<"\n\nMostrando lista de Clientes\n";
{
cout<<endl<<endl;
cout <<" Nombre : " << lista[i].nombre <<' '<< lista[i].apellido << endl;
cout<< " Productos vendidos:"<<lista[i].P.numProd<< endl;
cout << " N I T : "<< lista[i].DNI << endl;
cout << " Direccion: "<< lista[i].direccion << endl;
cout << " fecha: "<<(now->tm_mday ) << '/' << (now->tm_mon +1)<< '/' << (now->tm_year +1900)<<endl;
cout<<endl;
}
}
else
cout<<"\n\tRegistro vacio..!";
}
void eliminar_vendedor( int x, int &num)
{
if(num>0)
{
for(int i=x; i<num-1; i++)
lista[i] = lista[i+1];
num--;
}
else
cout<<"\n\tRegistro vacio..!";
}
void buscar_vendedor( int num)
{
int band = 0;
if(num>0)
{
for(int i=0; i<num; i++)
{
if(lista[i].DNI==aux.DNI)
{
cout<<"\n\n La direccion de "<<lista[i].nombre<<" "
<<lista[i].apellido<<" es : "
<<lista[i].direccion <<endl ;
band = 1 ;
break;
}
}
}
else
cout<<"\n\tRegistro vacio..!";
if(band==0)
cout<<"\n\n\tEl cliente no fue encontrado..! :S"<<endl;
}
void menu1()
{
clrscr();
cout<<"\n\t\tFacturacion de Clientes\n\n";
cout<<" 1. Facturacion "<<endl;
cout<<" 2. Mostrar registro de clientes y productos "<<endl;
cout<<" 3. Mostrar datos de un cliente "<<endl;
cout<<" 4. Mostrar productos vendidos al cliente "<<endl;
cout<<" 5. Eliminar cliente del registro "<<endl;
cout<<" 6. Buscar direccion de cliente por N I T "<<endl;
cout<<" 7. Salir "<<endl;
cout<<"\n Ingrese opcion : ";
}
/* funcion principal
------------------------------------------------------------------------------*/
void factura() {
int num=0; // numero
int op; // opcion del menu
int num_vendedor ;
system("color 0b");
do
{
menu1(); cin>> op;
switch(op)
{
case 1:
cout<<"\n Numero de clientes: ";
cin>> num; clrscr();
registrar_vendedores(num); cout<<endl;
break;
case 2:
clrscr();
mostrar_vendedores(num);
break;
case 3:
cout<<"\n Ingrese numero de cliente: ";
cin>> num_vendedor ;
datosVendedor( num_vendedor-1);
break;
case 4:
cout<<"\n Ingrese numero de cliente: ";
cin>> num_vendedor ;
prodVendedor( num_vendedor-1, num);
break;
case 5:
cout<<"\n Ingrese numero de cliente: ";
cin>> num_vendedor ;
eliminar_vendedor( num_vendedor-1, num);
cout<<"\n\n\t\tCliente eliminado ..!"<<endl;
break;
case 6:
cout<<"\n Ingrese numero de N I T: ";
cin>> aux.DNI;
buscar_vendedor(num);
break;
case 7:
menu();
}
cout<<endl<<endl;
getch();
}while(op!=7);
}
void unidades_en_letra(unsigned long cantidad)
{
unsigned char unidad = cantidad % 10;
unsigned char decima = (cantidad/10)% 10;
unsigned char centena = (cantidad/100)% 10;
if(centena!=0)
if(centenas[centena]==0)
cout<<unidades[centena]<<"Cientos";
else if (centena!=1 || unidad!=0 || decima!=0)
cout<<centenas[centena];
else
cout<<"Cien";
if(unidad!=0 || decima!=0)
{
if (centena!=0)
cout<<" ";
if (decima==0)
cout<<unidades[unidad];
else if ( unidad==0)
cout<<decimas[decima];
else if (decima==1 && unidad>=1 && unidad<=5)
cout<<diez_y[unidad];
else if (decima==1)
cout<<"Dieci"<<unidades[unidad];
else if (decima==2)
cout<<"Veinti"<<unidades[unidad];
else
cout<<decimas[decima]<<" y "<<unidades[unidad];
}
}
void millares_en_letra(unsigned long cantidad)
{
unsigned long unidades = cantidad % 1000;
unsigned long miles = (cantidad / 1000) % 1000;
if(miles>1)
unidades_en_letra(miles);
if(miles!=0)
cout<<"Mil";
if(unidades!=0 && miles!=0)
cout<<" ";
unidades_en_letra(unidades);
}
void millones_en_letra(unsigned long cantidad)
{
unsigned long unidades = cantidad % 1000000;
unsigned long millares = (cantidad / 1000000)% 1000000;
if(millares>1)
{
millares_en_letra(millares);
cout<<"Millones";
}
else if(millares!=0)
cout<<"Un Mill\242n";
if(unidades!=0 && millares!=0)
cout<<" ";
millares_en_letra(unidades);
}
// ---44444444444444444444444444 PROGRAMA factura 444444444444444444444444----------------------------
// ---44444444444444444444444444 PROGRAMA producto 444444444444444444444444----------------------------
void producto()
{
char resp;
do
{
clrscr();
printf("\n\n\t\t\t* * * * * MENU DE OPCIONES * * * * *");
printf("\n\t\t---------------------------------------------------");
printf("\n\t\t\t ALTA Y CONTROL DE PRODUCTOS ");
printf("\n\t\t-------------------------------------------------\n\n\n\n");
printf("\t\t\t\t (1) Crear Archivo \n");
printf("\t\t\t\t (2) Reporte \n");
printf("\t\t\t\t (3) Salir ........ ");
printf("\n\n\t\t\t\tSelecciona: ");
resp=getchar();
switch(resp)
{
case '1': crear();
break;
case '2': reporte();
break;
case '3' : menu();
}
}
while(resp!='3');
getch();
}
// === Funcion de crear un archivo ====
void crear()
{
clrscr();
char opcion = 's';
if ((fp=fopen("inventario.dat","ab"))==NULL)
printf("\n\n\n\n\t\t< < < Error de apertura de archivo inventario.dat > > >");
else
{
while(opcion == 's'){
printf("\n\n Escribe la Clave del Producto (No exceder de 16 digitos):\t ");
scanf("%s",&inventario.codigo);
printf("\n\n Escribe el Nombre del Producto\t ");
scanf("%s", &inventario.descrip);
printf("\n\n Escribe la Existencia del Producto:\t ");
scanf("%s", &inventario.exist);
printf("\n\n Escribe el Precio Unitario del Producto:\t ");
scanf("%s",&inventario.preuni);
fwrite(&inventario, sizeof(inventario), 1, fp);
printf("\n\n\n\t\t Desea Capturar Otro Producto [s/n] : ");
opcion = getchar();
getch();
}
}
fclose(fp);
}
//////////////////anexar/////////////////////////////
//// ====================================reporte de productos//////////
void reporte (){
int i;
clrscr(); // limpia la pantalla
FILE *invent; //Asigna un apuntador de tipo archivo
invent = fopen("inventario.dat", "r"); //verifica la apertura en modo lectura del archivo en donde se almacena la informacion
if(invent == NULL) // si el valor del apuntador es iguala NULO
{
printf("\nNo existe archivo"); // manda un mensaje de que no existe el archivo
}
fread(&inventario, sizeof(struct inven), 1, invent);
printf("------------------------------------------------------------------\n");
printf("CODIGO DESCRIPCION\t\tEXISTENCIA\tPRECIO UNITARIO \n");
printf("------------------------------------------------------------------\n");
while(!feof(invent)) //mientras no sea fin de archivo
{
gotoxy(2,i);
printf(" %s %s\t\t %s\t\t %s \n",inventario.codigo,inventario.descrip,inventario.exist,inventario.preuni);
gotoxy(9,i);
fread(&inventario, sizeof(struct inven), 1, invent);
}
fclose(invent); // cierra el archivo
getch();
menu();
}
// ---44444444444444444444444444 PROGRAMA PRINCIPAL 444444444444444444444444----------------------------
void caratula()
{
}
void menu()
{
int opcion;
clrscr() ;
caratula();
clrscr() ;
int op;
cout<<endl<<endl<<" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" º º"<<endl;
cout<<" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"<<endl;
gotoxy(30,5);cout<<"HOLA A TODOS SOY UNA PRUEBA";
gotoxy(36,6);cout<<"PROGRAMACION";
gotoxy(25,10);cout<<"1) Producto";
gotoxy(25,12);cout<<"2) Factura";
gotoxy(25,13);cout<<"3) Reporte";
gotoxy(25,14);cout<<"4) Salir";
gotoxy(25,16);cout<<"Su opci\242n es: ";
gotoxy(40,16);cin>>opcion;
clrscr();
switch(opcion)
{
case 1:
producto();
system("CLS");
break;
break;
case 2:
factura();
system("CLS");
break;
case 3:
reporte ();
system("CLS");
break;
case 4:
salir();
system("CLS");
break;
default:
cout<< "La opción ingresada no es valida, seleccione de nuevo. \n";
break;
}
}
int main(){
menu();
return 0;
}
void salir()
{
clrscr();cout<<"Vale, Adi\242s";
getch();
}