#include #include #include #include #include #include #include #include #include #include "..\libs\make_bot\make_bot.h" #include "sv_graph.h" #include "sv_util.h" #include "sv_ref_x.h" #define Texto_Normal setcolor(63); #define Letra_Boton setcolor(1); #define Texto_Negrita setcolor(0); #define FINAL 1 #define SOLO_ESTA 0 #define TODAS 1 #define DESDE_CONTRATO_ACTUAL 2 #define Para_Cliente 1 #define Para_Empresa 0 #define NO_ENCONTRADO 0 #define ENCONTRADO 1 extern int x_raton, y_raton, raton; extern int boton_izq, boton_der; extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py); extern void textxy(int x, int y, char *text); extern int Espera_Tecla_o_Raton(void); extern void desactiva_raton(void); extern void activa_raton(void); extern void Anclar_Raton(void); extern void BEEP(void); extern int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo); extern int InputCadenaG_l(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo, int Row); extern int InputCadenaG_T4(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo, int Row); extern void Actualizar_Ventas(int Referencia, int Unidades, int Codigo); extern void Abre_Ficha_Ventas(void); extern void Abre_Ficha_Clientes(void); extern void Abre_Ficha_Stock(void); extern void GetLineClientes(void); int Viable_Apertura(void); void Acota_Contenido(void); void AddRecordClientes_C(void); void Imprimir_Clientes_C(void); void Edit_Item_Clientes_C(void); void Menu_de_Clientes_Comp(void); void Mueve_Abajo_Clientes2(void); void Mueve_Ariba_Clientes2(void); void Mueve_Abajo_Clientes1(void); void Mueve_Arriba_Clientes1(void); void DeleteRecordClientes_C(void); void PutLineClientes_Compras2(void); void GetLineClientes_Compras2(void); void CompruebaLineasClientes_C(void); void PrintWholeScreenClientes2(void); void PrintWholeScreenClientes1(void); void Imprime_Factura_C(int Para_quien); void EditCursorClientes_C(int ShowHide); int Obten_Direccion_Compras(int which); void Displayado_de_Datos(int Para_quien); void Actualiza_Direccion_Compras(int which); void Current_Struct_to_Zero_Clientes_C(void); void PrintLineClientes_C(int Rapida_Completa); void Imprime_Todas_Facturas(int Para_quien, int Current_Date); void Barra_buscar_CC(struct boton *Tmp); void Buscar_Cliente_Seccion_Compras(void); int Sigue_Buscando_CB(struct Clientes Clientes1_Buscar); void Edit_Item_Clientes_CB(int Columna, struct boton *Tmp, struct Clientes *Clientes1_Buscar); void EditCursorClientes_CB(int Columna, int ShowHide, struct boton *Tmp, struct Clientes Clientes1_Buscar); extern void PrintWholeScreenClientes(void); extern void PrintLineClientes(int Rapida_Completa); extern int Comprueba_Impresora(void); extern void Abre_Ficha_Vendedores(void); extern void Coloca_Nombres_a_botones(void); extern void Carga_Todos_los_Vendedores(void); extern void Abre_Ficha_Clientes_Compras(void); extern void Prepara_Porcentaje_Circular(void); extern void Obten_Nombre_Vendedor( int Nvend ); extern void Abre_Ficha_Clientes_Ncontrato(void); void Barra_buscar_CC(struct boton *Tmp); void Buscar_Cliente_Seccion_Compras(void); struct Clientes_inx_NContrato { unsigned long Inicio; unsigned int Records; unsigned char Libre; }; struct Clientes_inx { char Ncontrato_ocupado_SN[10000]; unsigned int Fin; }; struct Clientes { int Address; char Nombre[15+1]; char Apellido1[15+1]; char Apellido2[15+1]; char DNI[15+1]; unsigned long Telefono1; char Calle1[30+1]; char Num1[5+1]; char Local[30+1]; unsigned long Telefono2; char Calle2[30+1]; char Num2[5+1]; char Poblacion[18+1]; char Provincia[16+1]; unsigned long CP; unsigned char GC; unsigned char MR; unsigned char SP; unsigned char DP; unsigned int MA; struct date Fecha; int Vend; int NContrato; }; // Se almacenan 1000 registros por archivo // En un caso extremo son: 9 bit ---> Espacio por Dato // 31 ---> Dias por mes // 2 ---> Productos por d // 12 ---> 12 meses // 1000 ---> Clientes // struct Clientes_compras { // C UU VEN REF struct date Fecha; // 1 99 999 9999 unsigned long Cod_Und_Vend_Ref; }; struct Vend_inx { unsigned int Fin; }; struct Vendedores { int Num_V; char Nombre[15+1]; char Apellido1[15+1]; char Apellido2[15+1]; char DNI[15+1]; unsigned long Telefono1; unsigned long Telefono2; char Calle[30+1]; char Num[3+1]; char Piso[3+1]; char Poblacion[18+1]; char Provincia[16+1]; unsigned long CP; unsigned long CC; unsigned int PP; unsigned int Cr; }; /* extern struct Stock_inx { unsigned int Fin; }; extern struct Stock_actual { int Ref; long Und_0; long Und_1; }; */ extern struct Stock_actual Ventas1; extern struct Stock_inx Ventas1_inx; extern void Actualizar_Stock(int Referencia, int Unidades, int Codigo); extern struct JD cabecera; extern struct Clientes Clientes1; extern struct Clientes_inx Clientes1_inx; extern struct Clientes_compras Clientes2; extern struct Clientes_inx_NContrato Clientes1_inx_NContrato; struct Clientes Clientes1_Buscar; extern struct Vendedores Vend1; extern struct Vend_inx Vend1_inx; struct boton *PAR; extern struct boton Comunes[9]; extern int oldCNI; extern int *Vend_Dir; extern FILE *Vend; // Fichero Vendedores extern FILE *Stock; extern FILE *Ventas; extern FILE *Clientes; // Fichero Clientes extern FILE *Clientes_C; // Fichero Clientes con las Compras. extern FILE *Clientes_NC; // Fichero Clientes con los neros de contrato activos. extern int CurrRow1_Clien, CurrRow2_Clien; extern int CurrCol1_Clien, CurrCol2_Clien; extern int CurrTopLine_Clien, CurrTopLine_Clien1; extern int SWAP_CLIEN; int Start_Comp_Clien; int Comp_Clien_Records; int Fecha, Usa_Pc = 0; int Comienzo_Busqueda = 0; char Se_Puede_Buscar = 0; int Buscador; void Menu_de_Clientes_Comp(int Current_Date) { Fecha = Current_Date; int finished = 0, key, bpush; char Buffer[80]; Buscador = 0; CurrRow1_Clien = 1; CurrCol1_Clien = 1; CurrRow2_Clien = 1; CurrCol2_Clien = 1; oldCNI = -1; SWAP_CLIEN = 1; CurrTopLine_Clien = 1; CurrTopLine_Clien1 = 1; Se_Puede_Buscar = 0; if( ( PAR = (struct boton *) malloc( sizeof(struct boton)*13 ) ) == NULL ) { Confirma("Memoria insuficiente", "para crear tablas de", "posisi PAR."); // farfree(Clientes1_inx_NContrato); return ; } if( ( Vend_Dir = (int *) malloc( sizeof(int)*1024 ) ) == NULL ) { Confirma("Memoria insuficiente", "para crear tablas para", "Vend_Dir"); free(PAR); return ; } //圹圹圹圹 inicializa_raton_grafico(0, 0, 624, 464, 320, 240); //圹圹圹圹 if(raton!=0) desactiva_raton(); cleardevice(); Dibuja_Pantalla_Altas_Rapida(PAR); Fuente(SMALL_FONT, 5); Coloca_Nombres_a_botones(); Fuente(SMALL_FONT, 5); if( !Viable_Apertura() ) return ; Abre_Ficha_Clientes(); Abre_Ficha_Clientes_Ncontrato(); Abre_Ficha_Referencias(); Carga_Referencias(); Abre_Ficha_Vendedores(); Carga_Todos_los_Vendedores(); Abre_Ficha_Stock(); Abre_Ficha_Ventas(); // PUNTO DE CONFLICTO PrintWholeScreenClientes1(); GetLineClientes(); Abre_Ficha_Clientes_Compras(); // GetLineClientes(); Acota_Contenido(); PrintWholeScreenClientes2(); GetLineClientes_Compras2(); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 { ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); } //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 // PrintLineClientes_C(0); int oldCR1=0, oldCR2=0, oldCC1=0, oldCC2=0; do{ if(oldCR1!=CurrRow1_Clien || oldCC1!=CurrCol1_Clien || oldCR2!=CurrRow2_Clien || oldCC2!=CurrCol2_Clien ) EditCursorClientes_C(0); oldCR1 = CurrRow1_Clien; oldCC1 = CurrCol1_Clien; oldCR2 = CurrRow2_Clien; oldCC2 = CurrCol2_Clien; if(raton!=0) activa_raton(); Espera_Tecla_o_Raton(); if(raton!=0) desactiva_raton(); if(kbhit()){ EditCursorClientes_C(1); key = getch(); if( isprint(key) || isspace(key) ) { EditCursorClientes_C(0); if(key!=13) ungetch(key); Edit_Item_Clientes_C(); EditCursorClientes_C(0); } else if( key == 0 ) { switch( (key=getch()) ){ // Flecha Arriba case 72: if(!SWAP_CLIEN) Mueve_Ariba_Clientes2(); else Mueve_Arriba_Clientes1(); break; // Flecha Izquierda case 75: case 15: if(SWAP_CLIEN) { CurrCol1_Clien--; if ( CurrCol1_Clien<1 ) CurrCol1_Clien=3; } else { CurrCol2_Clien--; if ( CurrCol2_Clien < 1 ) CurrCol2_Clien=7; } break; // Flecha Derecha case 77: case 9: if(SWAP_CLIEN) { CurrCol1_Clien++; if ( CurrCol1_Clien>3 ) CurrCol1_Clien=1; } else { CurrCol2_Clien++; if ( CurrCol2_Clien > 7 ) CurrCol2_Clien=1; } break; // Flecha Abajo case 80: if(!SWAP_CLIEN) Mueve_Abajo_Clientes2(); else Mueve_Abajo_Clientes1(); break; // Buscar F2 case 60: Buscar_Cliente_Seccion_Compras(); break; // Buscar otra vez --> F3 case 61: if(Se_Puede_Buscar) { CurrTopLine_Clien1++; Comienzo_Busqueda = 1; if( Sigue_Buscando_CB(Clientes1_Buscar) == ENCONTRADO ) { PrintWholeScreenClientes1(); GetLineClientes(); { if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); PrintWholeScreenClientes2(); GetLineClientes_Compras2(); } //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 } else { CurrTopLine_Clien1--; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, Comunes[7]); GetLineClientes(); } } break; // Imprimir Clientes (incluye men desplegable) F5 case 63: Imprimir_Clientes_C(); break; // SWAP_CLIEN (la parte de edici) F6 case 64: if(SWAP_CLIEN) { EditCursorClientes_C(0); SWAP_CLIEN=0; } else SWAP_CLIEN=1; EditCursorClientes_C(0); break; // F9 --> ADIR case 67: if(!SWAP_CLIEN) /*if( Confirma(" Dar de ALTA a un", "nuevo CLIENTE ?", "") )*/ { AddRecordClientes_C(); } break; // F10 -> BORRAR case 68: if(!SWAP_CLIEN) if( Confirma("Desea eliminar la", "Compra Actual", "") ) { Fuente(SMALL_FONT, 5); DeleteRecordClientes_C(); } break; // INICIO case 71: if(SWAP_CLIEN) CurrCol1_Clien = 1; else CurrCol2_Clien = 1; break; // FIN case 79: if(SWAP_CLIEN) CurrCol1_Clien = 3; else CurrCol2_Clien = 7; break; // ReP爂 case 73: // CurrRow = 1; if(SWAP_CLIEN) { CurrRow1_Clien = 1; if( CurrTopLine_Clien1 > 11 ) { CurrTopLine_Clien1 -= 11; } else { CurrTopLine_Clien1 = 1; } if( CurrTopLine_Clien1 < 1 ) { CurrTopLine_Clien1 = 1; } PrintWholeScreenClientes1(); GetLineClientes(); { if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); PrintWholeScreenClientes2(); GetLineClientes_Compras2(); // PrintLineClientes_C(1); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 } } break; // AvP爂 case 81: // CurrRow = 1; if(SWAP_CLIEN) { CurrRow1_Clien = 1; CurrTopLine_Clien1 += 11; if ( (CurrTopLine_Clien1+CurrRow1_Clien - 2 ) > Clientes1_inx.Fin) { CurrTopLine_Clien1 = Clientes1_inx.Fin+1; CurrRow1_Clien = 1; } if (CurrTopLine_Clien1==0) CurrTopLine_Clien1 = 1; PrintWholeScreenClientes1(); GetLineClientes(); { if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); PrintWholeScreenClientes2(); GetLineClientes_Compras2(); // PrintLineClientes_C(1); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 } } break; // Salir F1 case 59: finished = 1; break; default: break; } EditCursorClientes_C(0); } } else if(raton!=0 && ( boton_izq==1 || boton_der==1 ) ) if( (bpush = CheckButon( 9, Comunes))>0 ) { EditCursorClientes_C(1); switch(bpush){ // Flecha Arriba case 1: if(!SWAP_CLIEN) Mueve_Ariba_Clientes2(); else Mueve_Arriba_Clientes1(); break; // Buscar case 2: Buscar_Cliente_Seccion_Compras(); break; // Flecha Abajo case 3: if(!SWAP_CLIEN) Mueve_Abajo_Clientes2(); else Mueve_Abajo_Clientes1(); break; case 4: if(SWAP_CLIEN) { EditCursorClientes_C(0); SWAP_CLIEN=0; }else SWAP_CLIEN=1; EditCursorClientes_C(0); break; // Imprimir case 5: Imprimir_Clientes_C(); break; // Adir case 6: if(!SWAP_CLIEN) /*if( Confirma(" Dar de ALTA a un", "nuevo CLIENTE ?", "") )*/ { AddRecordClientes_C(); } break; // Borrar case 7: if(!SWAP_CLIEN) if( Confirma("Desea eliminar la", "Compra Actual", "") ) { Fuente(SMALL_FONT, 5); DeleteRecordClientes_C(); } break; // Repite Busqueda... case 8: if(Se_Puede_Buscar){ CurrTopLine_Clien1++; Comienzo_Busqueda = 1; if( Sigue_Buscando_CB(Clientes1_Buscar) == ENCONTRADO ) { PrintWholeScreenClientes1(); GetLineClientes(); { if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); PrintWholeScreenClientes2(); GetLineClientes_Compras2(); } //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 } else { CurrTopLine_Clien1--; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, Comunes[7]); GetLineClientes(); } } break; // Salir case 9: finished = 1; break; default: break; } EditCursorClientes_C(0); } else CompruebaLineasClientes_C(); }while(!finished); // rewind(Clientes_NC); fclose(Clientes); // Fichero Clientes fclose(Clientes_NC); // Fichero Clientes fclose(Clientes_C); // Fichero Clientes fclose(Stock); fclose(Ventas); fclose(Vend); // Fichero Clientes fclose(Ref); // Fichero Vendedores if(Memory_ok==1) farfree(Addr); else free(Ref_inx_addr); free(Vend_Dir); free(PAR); } void Mueve_Abajo_Clientes2(void){ int CurrRecord = CurrTopLine_Clien + CurrRow2_Clien - 1; if (CurrRow2_Clien==/*12*/11) { if ( (CurrRecord - 1) >= Comp_Clien_Records - 1) BEEP(); else { CurrTopLine_Clien++; PrintWholeScreenClientes2(); //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 GetLineClientes_Compras2(); // PrintLineClientes_C(1); } } else { if( (CurrRecord - 1) >= Comp_Clien_Records -1) BEEP(); else { CurrRow2_Clien++; GetLineClientes_Compras2(); // PrintLineClientes_C(1); } } } void Mueve_Ariba_Clientes2(void){ int CurrRecord = CurrTopLine_Clien + CurrRow2_Clien - 1; if (CurrRow2_Clien==1) { if ((CurrRecord - 1) <= 0) BEEP(); else { CurrTopLine_Clien--; PrintWholeScreenClientes2(); //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 GetLineClientes_Compras2(); // PrintLineClientes_C(1); } } else { if( (CurrRecord - 1) <= 0) BEEP(); else { CurrRow2_Clien--; GetLineClientes_Compras2(); // PrintLineClientes_C(1); } } } //圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹 //圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹圹 void Mueve_Abajo_Clientes1(void){ int CurrRecord = CurrTopLine_Clien1 + CurrRow1_Clien - 1; char Buffer[80]; if (CurrRow1_Clien==11) { if ( (CurrRecord - 1) >= Clientes1_inx.Fin) { BEEP(); return; } else { // CurrTopLine_Clien1++; CurrRow1_Clien=1; CurrTopLine_Clien1 += 11; if ( (CurrTopLine_Clien1+CurrRow1_Clien) > Clientes1_inx.Fin) { CurrTopLine_Clien = Clientes1_inx.Fin; CurrRow1_Clien = 1; } if (CurrTopLine_Clien1==0) CurrTopLine_Clien1 = 1; PrintWholeScreenClientes1(); GetLineClientes(); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 // PrintLineClientes_C(0); } } else { if( (CurrRecord - 1) >= (Clientes1_inx.Fin) ) { BEEP(); return; } else { CurrRow1_Clien++; GetLineClientes(); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 // PrintLineClientes_C(0); } } { if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); CurrTopLine_Clien = 1; CurrRow2_Clien = 1; PrintWholeScreenClientes2(); GetLineClientes_Compras2(); // PrintLineClientes_C(1); } } void Mueve_Arriba_Clientes1(void){ int CurrRecord = CurrTopLine_Clien1 + CurrRow1_Clien - 1; char Buffer[80]; if (CurrRow1_Clien==1) { if ((CurrRecord - 1) <= 0){ BEEP(); return; } else { // CurrTopLine_Clien1--; if( CurrTopLine_Clien1 > 11 ) { CurrTopLine_Clien1 -= 11; } else { CurrTopLine_Clien1 = 1; } if( CurrTopLine_Clien1 < 1 ) { CurrTopLine_Clien1 = 1; } CurrRow1_Clien = 11; while(CurrTopLine_Clien1 + CurrRow1_Clien - 1 >= Clientes1_inx.Fin ) CurrRow1_Clien--; PrintWholeScreenClientes1(); //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 //苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓苓 GetLineClientes(); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 // PrintLineClientes_C(0); } } else { if( (CurrRecord - 1) <= 0){ BEEP(); return; } else { CurrRow1_Clien--; GetLineClientes(); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 // PrintLineClientes_C(0); } } { if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); CurrTopLine_Clien = 1; CurrRow2_Clien = 1; PrintWholeScreenClientes2(); GetLineClientes_Compras2(); // PrintLineClientes_C(1); } } void EditCursorClientes_C(int ShowHide) { char Buffer[80]; setcolor(GRIS_C); setfillstyle(SOLID_FILL, GRIS_C); bar(10, 455, 545, 473); if(SWAP_CLIEN==1) { if (!ShowHide) { setcolor(63); setfillstyle(SOLID_FILL, 63); bar((PAR[CurrCol1_Clien].left+2), PAR[CurrCol1_Clien].up+4+(CurrRow1_Clien-1)*15+2, PAR[CurrCol1_Clien].right-2, PAR[CurrCol1_Clien].up+/*4*/+((CurrRow1_Clien)-1)*15+16); setcolor(0); } else { // ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, PAR[CurrCol1_Clien/*-1*/]); setcolor(0); setfillstyle(SOLID_FILL, 0); bar((PAR[CurrCol1_Clien].left+2), PAR[CurrCol1_Clien].up+4+(CurrRow1_Clien-1)*15+2, PAR[CurrCol1_Clien].right-2, PAR[CurrCol1_Clien].up+/*4*/+((CurrRow1_Clien)-1)*15+16); Texto_Normal } switch(CurrCol1_Clien) { case 1: outtextxy( PAR[1].left+2, PAR[1].up+2+(CurrRow1_Clien-1)*/*9*//*14*/15, Clientes1.Local ); outtextxy( 15, 455, "Nombre del Local."); break; case 2: sprintf(Buffer, "%s %s", Clientes1.Nombre, Clientes1.Apellido1); Buffer[15] = '\0'; outtextxy( PAR[2].left+2, PAR[2].up+2+(CurrRow1_Clien-1)*/*9*//*14*/15, Buffer ); outtextxy( 15, 455, "Nombre del Propietario."); break; case 3: sprintf(Buffer, "%12ld", Clientes1.Telefono2); outtextxy( PAR[3].left+2, PAR[3].up+2+(CurrRow1_Clien-1)*/*9*//*14*/15, Buffer ); outtextxy( 15, 455, "Tel俧ono del Local."); } } else { if (!ShowHide) { setcolor(63); setfillstyle(SOLID_FILL, 63); bar((PAR[CurrCol2_Clien + 3].left+2), PAR[(CurrCol2_Clien)/*-1*/+3].up+4+(CurrRow2_Clien-1)*15+2, PAR[(CurrCol2_Clien)/*-1*/+3].right-2, PAR[(CurrCol2_Clien)/*-1*/+3].up+/*3*//*4*/+((CurrRow2_Clien)-1)*15+16); setcolor(0); } else { setcolor(0); setfillstyle(SOLID_FILL, 0); bar((PAR[CurrCol2_Clien + 3].left+2), PAR[(CurrCol2_Clien)/*-1*/+3].up+4+(CurrRow2_Clien-1)*15+2, PAR[(CurrCol2_Clien)/*-1*/+3].right-2, PAR[(CurrCol2_Clien)/*-1*/+3].up+/*3*//*4*/+((CurrRow2_Clien)-1)*15+16); Texto_Normal } int Ref; switch(CurrCol2_Clien){ case 1: int day, mon; day= Clientes2.Fecha.da_day; mon= Clientes2.Fecha.da_mon; sprintf(Buffer, "%02d/%02d/%02d", day, mon, Clientes2.Fecha.da_year ); outtextxy( PAR[4].left+2, (PAR[4].up+3)+(CurrRow2_Clien-1)*15, Buffer ); outtextxy( 15, 455, "Fecha. 6 digitos m爔imo."); break; case 2: // 1 99 999 XXXX Ref = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); sprintf(Buffer, " %04d", Ref); outtextxy( PAR[5].left+2, (PAR[5].up+2)+(CurrRow2_Clien-1)*15, Buffer ); outtextxy( 15, 455, "Referencia del Producto. 4 digitos m爔imo."); break; case 3: outtextxy( PAR[6].left+2, (PAR[6].up+2)+(CurrRow2_Clien-1)*15, Ref1.Concepto ); outtextxy( 15, 455, "Concepto. 15 digitos m爔imo."); break; case 4: // 1 XX 999 9999 Ref = ( ( Clientes2.Cod_Und_Vend_Ref/10000000L ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000L)/100)*100 ) ); sprintf(Buffer, "% 2d", Ref); outtextxy( PAR[7].left+2, (PAR[7].up+2)+(CurrRow2_Clien-1)*15,Buffer ); outtextxy( 15, 455, "Unidades. 2 digitos m爔imo."); break; case 5: // 1 99 XXX 9999 Ref = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); sprintf(Buffer, "% 2d", Ref); outtextxy( PAR[8].left+2, (PAR[8].up+2)+(CurrRow2_Clien-1)*15,Buffer ); outtextxy( 15, 455, "Vendedor. 3 digitos m爔imo."); break; case 6: // X 99 999 9999 Ref = ( Clientes2.Cod_Und_Vend_Ref/1000000000L ); sprintf(Buffer, "% 2d", Ref); outtextxy( PAR[9].left+2, (PAR[9].up+2)+(CurrRow2_Clien-1)*15,Buffer ); outtextxy( 15, 455, "Cigo. 1 digitos m爔imo."); break; case 7: // TOTAL long Total = ( ( Clientes2.Cod_Und_Vend_Ref/10000000L ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000L)/100)*100 ) ); sprintf(Buffer, "% 7ld", ( (Total*Ref1.PVP) + ( (Total*Ref1.PVP*Ref1.P2)/100) ) ); outtextxy( PAR[10].left+2, (PAR[10].up+2)+(CurrRow2_Clien-1)*15,Buffer ); outtextxy( 15, 455, "TOTAL A PAGAR + I.V.A. "); break; } } } void PrintLineClientes_C(int Rapida_Completa){ char Buffer[80]; if(!Rapida_Completa) { // Completa setcolor(0); setfillstyle(SOLID_FILL, 0); //// //// //// //// for(int i=1; i<4; i++) bar((PAR[i].left+2), PAR[i].up+4+(CurrRow1_Clien-1)*15+2, PAR[i].right-2, PAR[i].up+4+((CurrRow1_Clien)-1)*15+16); Texto_Normal outtextxy( PAR[1].left+2, PAR[1].up+2+(CurrRow1_Clien-1)*15, Clientes1.Local ); sprintf(Buffer, "%s %s", Clientes1.Nombre, Clientes1.Apellido1); Buffer[15] = '\0'; outtextxy( PAR[2].left+2, PAR[2].up+2+(CurrRow1_Clien-1)*15, Buffer ); sprintf(Buffer, "%12ld", Clientes1.Telefono2); outtextxy( PAR[3].left+2, PAR[3].up+2+(CurrRow1_Clien-1)*15, Buffer ); } else { setcolor(0); setfillstyle(SOLID_FILL, 0); //// //// //// //// for(int i=4; i<11; i++) bar((PAR[i].left+2), PAR[i].up+4+(CurrRow2_Clien-1)*15+2, PAR[i].right-2, PAR[i].up+4+((CurrRow2_Clien)-1)*15+16); Texto_Normal int day, mon; day= Clientes2.Fecha.da_day; mon= Clientes2.Fecha.da_mon; sprintf(Buffer, "%02d/%02d/%02d", day, mon, Clientes2.Fecha.da_year ); outtextxy( PAR[4].left+2, (PAR[4].up+3)+(CurrRow2_Clien-1)*15, Buffer ); // 1 99 999 XXXX int Ref = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); sprintf(Buffer, " %04d", Ref); outtextxy( PAR[5].left+2, (PAR[5].up+2)+(CurrRow2_Clien-1)*15, Buffer ); outtextxy( PAR[6].left+2, (PAR[6].up+2)+(CurrRow2_Clien-1)*15, Ref1.Concepto ); // 1 XX 999 9999 Ref = ( ( Clientes2.Cod_Und_Vend_Ref/10000000L ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000L)/100)*100 ) ); sprintf(Buffer, "% 2d", Ref); outtextxy( PAR[7].left+2, (PAR[7].up+2)+(CurrRow2_Clien-1)*15,Buffer ); // 1 99 XXX 9999 Ref = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); sprintf(Buffer, "% 2d", Ref); outtextxy( PAR[8].left+2, (PAR[8].up+2)+(CurrRow2_Clien-1)*15,Buffer ); // X 99 999 9999 Ref = ( Clientes2.Cod_Und_Vend_Ref/1000000000L ); sprintf(Buffer, "% 2d", Ref); outtextxy( PAR[9].left+2, (PAR[9].up+2)+(CurrRow2_Clien-1)*15,Buffer ); long Total = ( ( Clientes2.Cod_Und_Vend_Ref/10000000L ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000L)/100)*100 ) ); sprintf(Buffer, "% 7ld", ( (Total*Ref1.PVP) + ( (Total*Ref1.PVP*Ref1.P2)/100) ) ); outtextxy( PAR[10].left+2, (PAR[10].up+2)+(CurrRow2_Clien-1)*15,Buffer); } } void PrintWholeScreenClientes2(void){ int tmp = CurrRow2_Clien; for(int i=4; i<=10; i++) ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[i]); for(CurrRow2_Clien = 1; CurrRow2_Clien < 11+1; CurrRow2_Clien++) // if ( (/*Start_Comp_Clien + */CurrTopLine_Clien + CurrRow2_Clien - 1 /*- 1*/) <= Comp_Clien_Records ){ GetLineClientes_Compras2(); // PrintLineClientes_C(1); } CurrRow2_Clien = tmp; } void PrintWholeScreenClientes1(void){ int tmp = CurrRow1_Clien; for(int i=1; i<4; i++) ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[i]); for(CurrRow1_Clien = 1; CurrRow1_Clien < (/*12*/11+1); CurrRow1_Clien++) if ( (CurrTopLine_Clien1 + CurrRow1_Clien - 1 - 1) <= Clientes1_inx.Fin){ GetLineClientes(); PrintLineClientes_C(0); } CurrRow1_Clien = tmp; } void Edit_Item_Clientes_C(void){ char Buffer[80]; long Fcha; int Cod_b, Ref_b, Und_b, Vend_b; if(SWAP_CLIEN){ while( kbhit() ) getch(); } else { switch (CurrCol2_Clien) { case 1: int day/*, mon*/; day= Clientes2.Fecha.da_day; // mon= Clientes2.Fecha.da_mon; // sprintf(Buffer, "%02d%02d%02d", day, mon, Clientes2.Fecha.da_year ); sprintf(Buffer, "%d", day ); do{ InputCadenaG_l( Buffer, 1, 2/*6*/, 63, 57, PAR[4], CurrRow2_Clien-1); Fcha = atol(Buffer); Clientes2.Fecha.da_day =Fcha; // Clientes2.Fecha.da_day = (Fcha/10000); // Clientes2.Fecha.da_mon = (Fcha/100) - ((Clientes2.Fecha.da_day) * 100); // Clientes2.Fecha.da_year = Fcha - ( (Clientes2.Fecha.da_day*10000) + (Clientes2.Fecha.da_mon*100) ); }while( ( Clientes2.Fecha.da_day<1 || Clientes2.Fecha.da_day>31 ) ); // }while( ( Clientes2.Fecha.da_day<1 || Clientes2.Fecha.da_day>31 ) || (Clientes2.Fecha.da_mon!=Fecha ) || strlen(Buffer)!=6 ); break; case 2: // 1 99 999 XXXX int Ref = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); sprintf(Buffer, "%d", Ref); do{ InputCadenaG_l( Buffer, 1, 4, 63, 57, PAR[5], CurrRow2_Clien-1); Ref_b = atoi(Buffer); }while( ( !Existe_Referencia( Ref_b ) || Ref_b == 0 ) && Ref_b != Ref ); // Este que viene ahora es un proceso crico, la // uni de los distintos registros en uno solo. Cod_b = ( Clientes2.Cod_Und_Vend_Ref/1000000000 ); // Ref_b = atoi(Buffer); Und_b = ( ( Clientes2.Cod_Und_Vend_Ref/10000000 ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000)/100)*100 ) ); Vend_b = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); Clientes2.Cod_Und_Vend_Ref = ( Cod_b * 1000000000 ) + ( Und_b * 10000000 ) + ( Vend_b * 10000 ) + ( Ref_b ) ; if(Ref != Ref_b) { /*if(!Ref_no_valid)*/ Actualizar_Stock( Ref, Und_b, Cod_b ); /*if(!Ref_no_valid)*/ Actualizar_Stock( Ref_b, (-1)*Und_b, Cod_b ); Actualizar_Ventas( Ref, (-1)*Und_b, Cod_b ); Actualizar_Ventas( Ref_b, Und_b, Cod_b ); } break; case 3: /* outtextxy( PAR[2].left+2, (PAR[2].up+2)+(CurrRow2_Clien-1)*12, Ref1.Concepto ); outtextxy( 15, 455, "Concepto. 15 digitos m爔imo."); */ while( kbhit() ) getch(); break; case 4: // 1 XX 999 9999 int Und = ( ( Clientes2.Cod_Und_Vend_Ref/10000000 ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000)/100)*100 ) ); sprintf(Buffer, "%d", Und); InputCadenaG_l( Buffer, 1, 2, 63, 57, PAR[7], CurrRow2_Clien-1); // Este que viene ahora es un proceso crico, la // uni de los distintos registros en uno solo. Cod_b = ( Clientes2.Cod_Und_Vend_Ref/1000000000 ); Ref_b = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); Und_b = atoi(Buffer); Vend_b = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); Clientes2.Cod_Und_Vend_Ref = ( Cod_b * 1000000000 ) + ( Und_b * 10000000 ) + ( Vend_b * 10000 ) + ( Ref_b ) ; if(Und != Und_b) { Actualizar_Stock( Ref_b, (-1)*( Und_b - Und), Cod_b ); Actualizar_Ventas( Ref_b, ( Und_b - Und), Cod_b ); } break; case 5: int Vend = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); sprintf(Buffer, "%d", Vend); do{ InputCadenaG_l( Buffer, 1, 3, 63, 57, PAR[8], CurrRow2_Clien-1); }while( Vend_Dir[atoi(Buffer)]==-1 ); Cod_b = ( Clientes2.Cod_Und_Vend_Ref/1000000000 ); Ref_b = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); Und_b = ( ( Clientes2.Cod_Und_Vend_Ref/10000000 ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000)/100)*100 ) ); Vend_b = atoi(Buffer); Clientes2.Cod_Und_Vend_Ref = ( Cod_b * 1000000000 ) + ( Und_b * 10000000 ) + ( Vend_b * 10000 ) + ( Ref_b ) ; break; case 6: // X 99 999 9999 int Cod = ( Clientes2.Cod_Und_Vend_Ref/1000000000 ); sprintf( Buffer, "%d", Cod); ungetch(8); InputCadenaG_l( Buffer, 1, 1, 63, 57, PAR[9], CurrRow2_Clien-1); Cod_b = (char)atoi(Buffer); Ref_b = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); Und_b = ( ( Clientes2.Cod_Und_Vend_Ref/10000000 ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000)/100)*100 ) ); Vend_b = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); Clientes2.Cod_Und_Vend_Ref = ( Cod_b * 1000000000 ) + ( Und_b * 10000000 ) + ( Vend_b * 10000 ) + ( Ref_b ) ; if(Cod != Cod_b) { Actualizar_Stock( Ref_b, (Und_b), Cod); Actualizar_Stock( Ref_b, (-1)*Und_b, Cod_b); Actualizar_Ventas( Ref_b, (-1)*(Und_b), Cod); Actualizar_Ventas( Ref_b, Und_b, Cod_b); } break; default: while( kbhit() ) getch(); return; } PutLineClientes_Compras2(); /*苘苘苘苘苘苘苘苘苘苘苘苘苘*/ /**/ GetLineClientes_Compras2(); /**/ /*哌哌哌哌哌哌哌哌哌哌哌哌哌*/ PrintLineClientes_C(1); } } void Actualiza_Direccion_Compras(int which){ int i, LSC =sizeof(struct Clientes_inx_NContrato); if ( which == SOLO_ESTA ) { fseek(Clientes_NC, (long)LSC*(Clientes1.Address), SEEK_SET); fwrite(&Clientes1_inx_NContrato, LSC,1, Clientes_NC); } if ( which == DESDE_CONTRATO_ACTUAL ) { for ( i = (Clientes1.Address+1); i <= (Clientes1.Address/100)+99; i++ ){ fseek(Clientes_NC, (long)LSC*( i ), SEEK_SET); fread(&Clientes1_inx_NContrato, LSC, 1, Clientes_NC); Clientes1_inx_NContrato.Inicio++ ; fseek(Clientes_NC, (long)LSC*( i ), SEEK_SET); fwrite(&Clientes1_inx_NContrato, LSC, 1, Clientes_NC); } } // Restauramos las direcciones. fseek(Clientes_NC, (long)sizeof(struct Clientes_inx_NContrato)*(Clientes1.Address), SEEK_SET); fread(&Clientes1_inx_NContrato, sizeof(struct Clientes_inx_NContrato),1, Clientes_NC); } int Obten_Direccion_Compras(int which){ int devolver = -1; if ( which == FINAL ) { fseek(Clientes_NC, (long)sizeof(struct Clientes_inx_NContrato)*( (Clientes1.Address/100)+99 ), SEEK_SET); fread(&Clientes1_inx_NContrato, sizeof(struct Clientes_inx_NContrato),1, Clientes_NC); devolver = Clientes1_inx_NContrato.Inicio + Clientes1_inx_NContrato.Records - 1; } // Restauramos las direcciones. fseek(Clientes_NC, (long)sizeof(struct Clientes_inx_NContrato)*(Clientes1.Address), SEEK_SET); fread(&Clientes1_inx_NContrato, sizeof(struct Clientes_inx_NContrato),1, Clientes_NC); return devolver; } //槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨剥槽猖氨 void DeleteRecordClientes_C(void) { unsigned int CurrRecord; int LSC = sizeof(struct Clientes_compras); CurrRecord = CurrTopLine_Clien + CurrRow2_Clien - 1; if ( Comp_Clien_Records == 1 ) BEEP(); else { Clientes1_inx_NContrato.Records -= 1; Comp_Clien_Records--; Actualiza_Direccion_Compras(SOLO_ESTA); int Ref = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); int Cod = ( Clientes2.Cod_Und_Vend_Ref/1000000000 ); int Und = ( ( Clientes2.Cod_Und_Vend_Ref/10000000 ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000)/100)*100 ) ); // int Vend = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); Actualizar_Ventas( Ref, (-1)*Und, Cod ); Actualizar_Stock( Ref, Und, Cod ); unsigned int p = CurrRecord + Clientes1_inx_NContrato.Inicio + Start_Comp_Clien - 1; while( p <= ( Clientes1_inx_NContrato.Inicio + Clientes1_inx_NContrato.Records - 1) ) { fseek(Clientes_C, (long)( LSC * ( p + 1 ) ), SEEK_SET); fread(&Clientes2, LSC, 1, Clientes_C); fseek(Clientes_C, (long)( LSC * p ), SEEK_SET); fwrite(&Clientes2, LSC, 1, Clientes_C); p++; }; PrintWholeScreenClientes2(); if ( (CurrRecord - 1) == Comp_Clien_Records) CurrRow2_Clien--; GetLineClientes_Compras2(); // PrintLineClientes_C(0); } } void AddRecordClientes_C(void){ int LSC = sizeof(struct Clientes_compras); int CurrRecord = CurrTopLine_Clien + CurrRow2_Clien - 1; if(CurrRecord < 80 ) { long avance = Obten_Direccion_Compras(FINAL) + 1; while( avance >= (CurrRecord + Clientes1_inx_NContrato.Inicio + Start_Comp_Clien ) ) { fseek(Clientes_C, (long)( LSC * avance ), SEEK_SET); fread(&Clientes2, LSC, 1, Clientes_C); fseek(Clientes_C, (long)( LSC * (avance + 1) ), SEEK_SET); fwrite(&Clientes2, LSC, 1, Clientes_C); avance--; }; Clientes1_inx_NContrato.Records ++; Comp_Clien_Records++; Actualiza_Direccion_Compras(SOLO_ESTA); Actualiza_Direccion_Compras(DESDE_CONTRATO_ACTUAL); Clientes2.Fecha.da_day = 0; Clientes2.Fecha.da_mon = Fecha; Clientes2.Cod_Und_Vend_Ref = 1000000000; fseek(Clientes_C, (long)( LSC * ( CurrTopLine_Clien + CurrRow2_Clien + Start_Comp_Clien + Clientes1_inx_NContrato.Inicio - 1) ), SEEK_SET); fwrite(&Clientes2, LSC, 1, Clientes_C); CurrRow2_Clien++; if (CurrRow2_Clien>15) { CurrTopLine_Clien++; CurrRow2_Clien--; } PrintWholeScreenClientes2(); GetLineClientes_Compras2(); //PrintLineClientes_C(0); } } void GetLineClientes_Compras2(void){ int LSC = sizeof(struct Clientes_compras); long CurrRecord = CurrTopLine_Clien + CurrRow2_Clien - 1 + Clientes1_inx_NContrato.Inicio + Start_Comp_Clien; fseek(Clientes_C, (long)( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca fread(&Clientes2, LSC, 1, Clientes_C); // Y lee BuscaReferencia(( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) )); } void PutLineClientes_Compras2(void){ int LSC = sizeof(struct Clientes_compras); long CurrRecord = CurrTopLine_Clien + CurrRow2_Clien - 1 + Clientes1_inx_NContrato.Inicio + Start_Comp_Clien; fseek(Clientes_C, (long)( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca fwrite(&Clientes2, LSC, 1, Clientes_C); // Y lee } void Imprimir_Clientes_C(void){ int Where_Ask = 1; int fins_print= 0, key_print, bpush; void far *ptr; unsigned size; struct boton pregunta[3]; size = imagesize(198, 138, 372, 257); /* get byte size of image */ if ( (ptr = farmalloc(size)) != NULL) { getimage(198, 138, 372, 257, ptr); pregunta[0].up = 140; pregunta[0].down = 255; pregunta[0].left= 200; pregunta[0].right= 370; ImprimeBoton (1, ROJO, GRIS_C, BLANCO, pregunta[0]); pregunta[0].up = 150; pregunta[0].down = 175; pregunta[0].left= 210; pregunta[0].right= 360; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[0]); pregunta[1].up = 185; pregunta[1].down = 210; pregunta[1].left= 210; pregunta[1].right= 360; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[1]); pregunta[2].up = 220; pregunta[2].down = 245; pregunta[2].left= 210; pregunta[2].right= 360; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[2]); Fuente(SMALL_FONT, 4); } else { Where_Ask = 0; pregunta[0].up = 450; pregunta[0].down = 475; pregunta[0].left= 5; pregunta[0].right= 152; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[0]); pregunta[1].up = 450; pregunta[1].down = 475; pregunta[1].left= 155; pregunta[1].right= 309; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[1]); pregunta[2].up = 450; pregunta[2].down = 475; pregunta[2].left= 312; pregunta[2].right= 549; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[2]); Fuente(SMALL_FONT, 4); } Letra_Boton outtextxy(pregunta[0].left+2, pregunta[0].up+2, "F3 Factura Cliente"); outtextxy(pregunta[1].left+2, pregunta[1].up+2, "F2 Factura Empresa"); outtextxy(pregunta[2].left+2, pregunta[2].up+2, "F1 CANCELAR IMPRESION"); //苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘 do{ if(raton!=0) activa_raton(); Espera_Tecla_o_Raton(); if(raton!=0) desactiva_raton(); if(kbhit()){ key_print = getch(); if( key_print == 0 ) { switch( (key_print=getch()) ){ // F1 Cancelar case 59: fins_print = 1; break; // F3 Imprimir Ficha case 61: if(Where_Ask){ pregunta[0].up = 140; pregunta[0].down = 255; pregunta[0].left= 200; pregunta[0].right= 370; } else { pregunta[0].up = 450; pregunta[0].down = 475; pregunta[0].left= 5; pregunta[0].right= 549; } ImprimeBoton (1, GRIS_O, GRIS_C, BLANCO, pregunta[0]); //苘苘苘苘苘苘苘苘苘苘 if(Comprueba_Impresora()) { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Imprimiendo."); outtextxy(210,170, "Por Favor, espere..."); } else outtextxy(10,452, "Imprimiendo. Por Favor, espere..."); Imprime_Factura_C(Para_Cliente); } else { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Impresora no preparada."); outtextxy(210,170, "Impresion Cancelada"); } else { outtextxy(10,452, "Impresora no preparada. Impresi Cancelada."); } Espera_Tecla_o_Raton(); } fins_print = 1; //苘苘苘苘苘苘苘苘苘苘 break; // F2 Imprimir lista r爌ida case 60: if(Where_Ask){ pregunta[0].up = 140; pregunta[0].down = 255; pregunta[0].left= 200; pregunta[0].right= 370; } else { pregunta[0].up = 450; pregunta[0].down = 475; pregunta[0].left= 5; pregunta[0].right= 549; } ImprimeBoton (1, GRIS_O, GRIS_C, BLANCO, pregunta[0]); //苘苘苘苘苘苘苘苘苘苘 if(Comprueba_Impresora()) { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Imprimiendo."); outtextxy(210,170, "Por Favor, espere..."); } else outtextxy(10,452, "Imprimiendo. Por Favor, espere..."); Imprime_Factura_C(Para_Empresa); } else { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Impresora no preparada."); outtextxy(210,170, "Impresion Cancelada"); } else { outtextxy(10,452, "Impresora no preparada. Impresi Cancelada."); } Espera_Tecla_o_Raton(); } fins_print = 1; //苘苘苘苘苘苘苘苘苘苘 break; default: fins_print = 1; } } } else if(raton!=0 && boton_izq==1 || boton_der==1) { if( (bpush = CheckButon( 3, pregunta))>0 ) { if(Where_Ask){ pregunta[0].up = 140; pregunta[0].down = 255; pregunta[0].left= 200; pregunta[0].right= 370; } else { pregunta[0].up = 450; pregunta[0].down = 475; pregunta[0].left= 5; pregunta[0].right= 549; } ImprimeBoton (1, GRIS_O, GRIS_C, BLANCO, pregunta[0]); switch(bpush){ // Imprimir Ficha case 1: //苘苘苘苘苘苘苘苘苘苘 if(Comprueba_Impresora()) { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Imprimiendo."); outtextxy(210,170, "Por Favor, espere..."); } else outtextxy(10,452, "Imprimiendo. Por Favor, espere..."); Imprime_Factura_C(Para_Cliente); } else { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Impresora no preparada."); outtextxy(210,170, "Impresion Cancelada"); } else { outtextxy(10,452, "Impresora no preparada. Impresi Cancelada."); } Espera_Tecla_o_Raton(); } fins_print = 1; //苘苘苘苘苘苘苘苘苘苘 break; // Imprime Lista R爌ida case 2: //苘苘苘苘苘苘苘苘苘苘 if(Comprueba_Impresora()) { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Imprimiendo."); outtextxy(210,170, "Por Favor, espere..."); } else outtextxy(10,452, "Imprimiendo. Por Favor, espere..."); Imprime_Factura_C(Para_Empresa); } else { Letra_Boton if(Where_Ask){ outtextxy(210,150, "Impresora no preparada."); outtextxy(210,170, "Impresion Cancelada"); } else { outtextxy(10,452, "Impresora no preparada. Impresi Cancelada."); } Espera_Tecla_o_Raton(); } fins_print = 1; //苘苘苘苘苘苘苘苘苘苘 break; // Cancelar case 3: fins_print=1; break; default: fins_print = 1; } } } }while(!fins_print); //哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌 if(Where_Ask == 1) { putimage(198, 138, ptr, COPY_PUT); farfree(ptr); } else { struct boton help; help.up = 450; help.down = 475; help.left = 5; help.right = 549; ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, help); } Fuente(SMALL_FONT, 5); } void Imprime_Factura_C(int Para_quien){ char Buffer[80]; int old_CurrRow2, old_CurrTopLine; int day, mon, Ref, Und, Cod, Vend; unsigned long Suma_Total = 0, Suma_IVA = 0, Total; old_CurrRow2 = CurrRow2_Clien; old_CurrTopLine = CurrTopLine_Clien; CurrTopLine_Clien = 1; fprintf( stdprn, "\n\r"); fprintf( stdprn, "FACTURA PROTOTIPO N1JD(SV0001)\n\r"); fprintf( stdprn, "MENSAJE 001\n\r"); fprintf( stdprn, "DIRECCI郚 001\n\r"); fprintf( stdprn, "TEL怓ONO 001, 002\n\r"); fprintf( stdprn, "MENSAJE 002\n\r"); fprintf( stdprn, "\n\r"); fprintf( stdprn, " Cliente: %03d", (Clientes1.CP-((Clientes1.CP/1000)*1000)) ); fprintf( stdprn, "."); fprintf( stdprn, "%04d\n\r", Clientes1.NContrato); fprintf( stdprn, " %s\n\r",Clientes1.Local); fprintf( stdprn, " %s %s, %s\n\r", Clientes1.Apellido1, Clientes1.Apellido2, Clientes1.Nombre); fprintf( stdprn, " %s, n %s\n\r", Clientes1.Calle2, Clientes1.Num2); fprintf( stdprn, "\n\r"); fprintf( stdprn, "谀哪哪哪哪穆哪哪哪穆哪哪哪哪哪哪哪哪哪哪哪履哪哪履哪哪履哪哪哪履哪哪哪哪履哪哪目\n\r"); fprintf( stdprn, " Fecha Ref/C Producto IVA Und P.V.P Total | Vend 砛n\r"); for(CurrRow2_Clien = 1; (CurrTopLine_Clien + CurrRow2_Clien - 1) <= Comp_Clien_Records; CurrRow2_Clien++) { GetLineClientes_Compras2(); // fprintf( stdprn, " | 砛n\r"); // X 99 999 9999 Cod = ( Clientes2.Cod_Und_Vend_Ref/1000000000L ); day= Clientes2.Fecha.da_day; mon= Clientes2.Fecha.da_mon; sprintf(Buffer, "%02d/%02d/%02d", day, mon, Clientes2.Fecha.da_year ); // 1 99 999 XXXX Ref = ( Clientes2.Cod_Und_Vend_Ref - ((Clientes2.Cod_Und_Vend_Ref/10000)*10000) ); // 1 XX 999 9999 Und = ( ( Clientes2.Cod_Und_Vend_Ref/10000000L ) - ( ( (Clientes2.Cod_Und_Vend_Ref/10000000L)/100)*100 ) ); // 1 99 XXX 9999 Vend = ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) - ( ( ( Clientes2.Cod_Und_Vend_Ref/10000 ) / 1000) * 1000 ) ); Total = Und * Ref1.PVP; if( Cod == 0 && Para_quien == Para_Empresa ) { fprintf( stdprn, "媚哪哪哪哪呐哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪拍哪哪拍哪哪拍哪哪哪拍哪哪哪哪拍哪哪拇\n\r"); // fprintf( stdprn, " % 6s % 4d%1d %-20s % 3d % 2d % 5d % 7ld | % 3d 砛n\r", Buffer, Ref, Cod, Ref1.Concepto, Ref1.P2, Und, Ref1.PVP, Total, Vend); fprintf( stdprn, " % 6s % 4d%1d %-20s % 3d % 2d % 5d ", Buffer, Ref, Cod, Ref1.Concepto, Ref1.P2, Und, Ref1.PVP); fprintf( stdprn, " % 7ld | % 3d 砛n\r", Total, Vend); Suma_Total += Total; Suma_IVA += ( (Total * Ref1.P2) / 100 ); } if( Cod != 0 ) { fprintf( stdprn, "媚哪哪哪哪呐哪哪哪呐哪哪哪哪哪哪哪哪哪哪哪拍哪哪拍哪哪拍哪哪哪拍哪哪哪哪拍哪哪拇\n\r"); // fprintf( stdprn, " % 6s % 4d%1d %-20s % 3d % 2d % 5d % 7ld | % 3d 砛n\r", Buffer, Ref, Cod, Ref1.Concepto, Ref1.P2, Und, Ref1.PVP, Total, Vend); fprintf( stdprn, " % 6s % 4d%1d %-20s % 3d % 2d % 5d ", Buffer, Ref, Cod, Ref1.Concepto, Ref1.P2, Und, Ref1.PVP); fprintf( stdprn, " % 7ld | % 3d 砛n\r", Total, Vend); Suma_Total += Total; Suma_IVA += ( (Total * Ref1.P2) / 100 ); } if (Usa_Pc == 1) pieslice(400, 265, (( ( 360 * ( ( CurrRow2_Clien * 100 ) / Comp_Clien_Records ) ) / 100 ) - 1), 0, 38); } fprintf( stdprn, "滥哪哪哪哪牧哪哪哪牧哪哪哪哪哪哪哪哪哪哪哪聊哪哪拍哪哪聊哪哪哪拍哪哪哪哪聊哪哪拇\n\r"); fprintf( stdprn, " Suma Total %13ld 砛n\r", Suma_Total ) ; fprintf( stdprn, " + I.V.A. %13ld 砛n\r", Suma_IVA ) ; fprintf( stdprn, " 媚哪哪哪哪哪哪拍哪哪哪哪哪哪哪拇\n\r") ; fprintf( stdprn, " TOTAL %13ld 砛n\r", (Suma_Total + Suma_IVA) ) ; fprintf( stdprn, " 滥哪哪哪哪哪哪聊哪哪哪哪哪哪哪馁\n\r") ; fputc(12, stdprn); CurrRow2_Clien = old_CurrRow2; CurrTopLine_Clien = old_CurrTopLine; GetLineClientes_Compras2(); Fuente(SMALL_FONT, 5); } void CompruebaLineasClientes_C(void){ /* // Check una pulsacion sobre un campo, y se situa, si es posible int inc=0; if( (inc = CheckButon_S(10, 4, PAR))>0 && (inc <=23) ) { EditCursorClientes_C(1); CurrCol1_Clien = (inc); } */ } // //  // Esta funci, que debe ser llamada antes de cada obtenci de datos  // de Compras, devolvera las acotaciones necesarias, para el mes actual  // dentro de la ficha respectiva. Si no existe ese mes en cuesti se  // adir, ya indexado al fichero.  //  // Reestructuraci de la gesti interna del archivo de compras para  // una mayor facilidad en su gesti...  //  // void Acota_Contenido(void){ int Avance = 0, ok = 0; int LSC = sizeof(struct Clientes_compras); long CurrRecord; //Start_Comp_Clien = -1; Comp_Clien_Records = 0; // Ahora se buscar que el mes, coincida con el mes elegido para la // transacci, guardando la direcci del mes mas cercano. fseek(Clientes_NC, (long)sizeof(struct Clientes_inx_NContrato)*(Clientes1.Address), SEEK_SET); fread(&Clientes1_inx_NContrato, sizeof(struct Clientes_inx_NContrato),1, Clientes_NC); /* if(Clientes1_inx_NContrato.Records < 12){ fseek(Clientes_NC, (long)sizeof(struct Clientes_inx_NContrato)*(Clientes1.Address), SEEK_SET); fwrite(&Clientes1_inx_NContrato, sizeof(struct Clientes_inx_NContrato),1, Clientes_NC); } */ while(Avance < Clientes1_inx_NContrato.Records ){ CurrRecord = Clientes1_inx_NContrato.Inicio + Avance + 1; fseek(Clientes_C, (long)( LSC * CurrRecord ) - LSC, SEEK_SET); // Se coloca fread(&Clientes2, LSC, 1, Clientes_C); // Y lee if( Clientes2.Fecha.da_mon == Fecha ) { if( ok == 0) Start_Comp_Clien = Avance; Comp_Clien_Records++; ok = 1; } Avance++; } // Si no se encuentra el mes buscado, if( ok == 1 ) return; else { Confirma("Error en direccionamiento","el archivo COMPRAS","debe estar corrupto."); restorecrtmode(); exit(2); } } int Viable_Apertura(void){ if( !file_exists("Clientes.DAT") || !file_exists("C_INDICE.DAT") ){ Confirma("Antes de iniciar el", "mantenimiento debe", "existir algun cliente" ); return (0); } return (1); } void Imprime_Todas_Facturas(int Para_quien, int Current_Date){ Fecha = Current_Date; int tmp = CurrRow1_Clien, Ptotal; Usa_Pc = 1; oldCNI = -1; setcolor(4); setfillstyle(SOLID_FILL, 60); if( !Viable_Apertura() ) return ; Abre_Ficha_Clientes(); Abre_Ficha_Clientes_Ncontrato(); Abre_Ficha_Referencias(); Carga_Referencias(); if( ( Vend_Dir = (int *) malloc( sizeof(int)*1024 ) ) == NULL ) { Confirma("Memoria insuficiente", "para crear tablas para", "Vend_Dir"); return ; } Abre_Ficha_Vendedores(); Carga_Todos_los_Vendedores(); CurrRow1_Clien = 1; CurrTopLine_Clien1 = 1; GetLineClientes(); Abre_Ficha_Clientes_Compras(); for(CurrRow1_Clien = 1; CurrRow1_Clien <= ( Clientes1_inx.Fin + 1); CurrRow1_Clien++){ GetLineClientes(); if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } Acota_Contenido(); // Porcentaje(); Displayado_de_Datos(Para_quien); setcolor(4); setfillstyle(SOLID_FILL, 60); Imprime_Factura_C(Para_quien); // Calculamos el porcentaje total realizado // Si todo es el: ( Clientes1_inx.Fin + 1 ) es decir 100 % // CurrRow1_Clien el el X % // X = ( CurrRow1_Clien * 100 ) / ( Clientes1_inx.Fin + 1 ) // Si 285 es el 100 % // x es el X anterior // x = ( 285 * X ) / 100 Ptotal = ( ( 283 * ( ( CurrRow1_Clien * 100 ) / ( Clientes1_inx.Fin + 1 ) ) ) / 100 ); bar(167, 172, 167 + Ptotal, 182 ); Prepara_Porcentaje_Circular(); } CurrRow1_Clien = tmp; fclose(Clientes); // Fichero Clientes fclose(Clientes_NC); // Fichero Clientes fclose(Clientes_C); // Fichero Clientes fclose(Ref); // Fichero Vendedores if(Memory_ok==1) farfree(Addr); else free(Ref_inx_addr); free(Vend_Dir); Usa_Pc = 0; } void Displayado_de_Datos(int Para_quien){ char Buffer[80]; char mes[][11] = { " Enero", "Febrero", " Marzo", " Abril", " Mayo", " Junio", " Julio", " Agosto", "Septiemb", "Octubre", "Noviemb", "Diciemb" }; struct boton TMP; TMP.up = 320; TMP.down = 380; TMP.left = 165; TMP.right = 450; ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, TMP); // Check[4].up = 290; Check[4].down = 310; // Check[4].left = 260; Check[4].right = 350; setcolor(4); if(Para_quien==Para_Cliente) sprintf( Buffer, "Imprimiendo mes: %s, para Cliente", mes[Fecha-1] ); else if(Para_quien==Para_Empresa) sprintf( Buffer, "Imprimiendo mes: %s, para Empresa", mes[Fecha-1] ); else if(Para_quien==5) sprintf( Buffer, "Buscando en %s, Los 12 mejores Clientes", mes[Fecha-1] ); outtextxy(167, 322, Buffer); sprintf( Buffer, "Contrato n % 4d, y % 2d compras." , Clientes1.NContrato, Comp_Clien_Records); outtextxy(167, 337, Buffer); sprintf( Buffer, "> %s" , Clientes1.Local); outtextxy(/*262*/167, 352, Buffer); } void Buscar_Cliente_Seccion_Compras(void){ struct boton *b_cc; char Buffer[80]; int TFuente, f_busqueda = 0, Columna=1, key; struct textsettingstype textinfo; gettextsettings(&textinfo); TFuente = textinfo.charsize; void far *ptr; unsigned size; int Encontrado = 0; size = imagesize(47, 224, 593, 271); Clientes1_Buscar.NContrato = -1; strcpy(Clientes1_Buscar.Local, "\0"); strcpy(Clientes1_Buscar.Nombre, "\0"); strcpy(Clientes1_Buscar.Apellido1, "\0"); Clientes1_Buscar.Telefono2 = -1; if( (b_cc = (struct boton *)calloc( 10, sizeof( struct boton ) ) ) == NULL ) { Confirma( "Imposible iniciar", "busqueda...", "MEMORIA INSUFICIENTE" ); return; } /* get byte size of image */ if ( (ptr = farmalloc(size)) == NULL) { Confirma( "Imposible iniciar", "busqueda.._.", "MEMORIA INSUFICIENTE" ); free(b_cc); return; } getimage(47, 224, 593, 271, ptr); Barra_buscar_CC( b_cc ); // Prueba inicial... do{ EditCursorClientes_CB(Columna, 0, b_cc, Clientes1_Buscar); Espera_Tecla_o_Raton(); if(kbhit()){ EditCursorClientes_CB(Columna, 1, b_cc, Clientes1_Buscar); key = getch(); if( key == 27 ) f_busqueda = 1; if( isprint(key) || isspace(key) ) { EditCursorClientes_CB(Columna, 0, b_cc, Clientes1_Buscar); if(key!=13) ungetch(key); Edit_Item_Clientes_CB(Columna, b_cc, &Clientes1_Buscar); EditCursorClientes_CB(Columna, 0, b_cc, Clientes1_Buscar); } else if( key == 0 ) { switch( (key=getch()) ){ // Flecha Izquierda case 75: case 15: { Columna--; if ( Columna<1 ) Columna=4; } break; // Flecha Derecha case 77: case 9: { Columna++; if ( Columna>4 ) Columna=1; } break; // INICIO case 71: Columna = 1; break; // FIN case 79: Columna = 4; break; // Salir F1 case 59: f_busqueda = 1; break; default: break; } EditCursorClientes_CB(Columna, 0, b_cc, Clientes1_Buscar); } } }while(!f_busqueda); struct boton Temp; if( strlen(Clientes1_Buscar.Local)!=0 || strlen(Clientes1_Buscar.Nombre)!=0 || Clientes1_Buscar.Telefono2 != -1 || Clientes1_Buscar.NContrato != -1 ) { Comienzo_Busqueda = 0; Encontrado = Sigue_Buscando_CB( Clientes1_Buscar ); } else { ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, Comunes[7]); } putimage(47, 224, ptr, 0); farfree(ptr); free(b_cc); Fuente(SMALL_FONT, TFuente); if( Encontrado ) { Temp.up = Comunes[7].up+4; Temp.down = Comunes[7].down-4; Temp.left = Comunes[7].left+4; Temp.right = Comunes[7].right-4; ImprimeBoton (1, ROJO, GRIS_O, BLANCO, Temp); textxy( Temp.left + 2, Temp.up /*+ 2*/, " Buscar"); textxy( Temp.left + 2, Temp.up /*+ 2*/+10, " otra "); textxy( Temp.left + 2, Temp.up /*+ 2*/+20, " F3 "); if(Buscador==0) PrintWholeScreenClientes1(); GetLineClientes(); if( ( (Clientes1.Address)/100/*0*/ ) != oldCNI ){ oldCNI = ( (Clientes1.Address) / 100/*0*/ ); fclose(Clientes_C); Abre_Ficha_Clientes_Compras(); } if(Buscador==0){ Acota_Contenido(); PrintWholeScreenClientes2(); GetLineClientes_Compras2(); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, PAR[11]); setcolor(63); sprintf(Buffer, "N de Contrato: % 4d Suma Total:", Clientes1.NContrato); outtextxy(20, 431, Buffer); //北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 } else { Fuente(SMALL_FONT, 4); PrintWholeScreenClientes(); Fuente(SMALL_FONT, 5); PrintLineClientes(0); } } else { ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, Comunes[7]); GetLineClientes(); } } void Barra_buscar_CC(struct boton *Tmp){ Fuente(SMALL_FONT, 4); // BARRA DE BUSQUEDA... Tmp[0].up = 225; Tmp[0].down = 270; Tmp[0].left = 48; Tmp[0].right = 592; ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, Tmp[0]); Tmp[1].up = 228; Tmp[1].down = 268; Tmp[1].left = 50; Tmp[1].right = 590; ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, Tmp[1]); Tmp[0].up = 248; Tmp[0].down = 263; Tmp[0].left = 54; Tmp[0].right = 126; ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, Tmp[0]); Tmp[1].up = 248; Tmp[1].down = 263; Tmp[1].left = 130; Tmp[1].right = 325; ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, Tmp[1]); Tmp[2].up = 248; Tmp[2].down = 263; Tmp[2].left = 329; Tmp[2].right = 440; ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, Tmp[2]); Tmp[3].up = 248; Tmp[3].down = 263; Tmp[3].left = 444; Tmp[3].right = 586; ImprimeBoton (1, NEGRO, BLANCO, GRIS_O, Tmp[3]); textxy( 52, 230, " N Contrato | Local | Nombre | Tel俧ono" ); } void EditCursorClientes_CB(int Columna, int ShowHide, struct boton *Tmp, struct Clientes Clientes1_Buscar) { char Buffer[80]; setcolor(GRIS_C); setfillstyle(SOLID_FILL, GRIS_C); bar(10, 455, 545, 473); if(SWAP_CLIEN==1) { if (!ShowHide) { setcolor(63); setfillstyle(SOLID_FILL, 63); bar((Tmp[Columna-1].left+2), Tmp[Columna-1].up+2, Tmp[Columna-1].right-2, Tmp[Columna-1].down - 2); setcolor(0); } else { setcolor(0); setfillstyle(SOLID_FILL, 0); bar((Tmp[Columna-1].left+2), Tmp[Columna-1].up+2, Tmp[Columna-1].right-2, Tmp[Columna-1].down - 2); Texto_Normal } switch(Columna) { case 1: sprintf(Buffer, "%d", Clientes1_Buscar.NContrato); outtextxy( Tmp[0].left+2, Tmp[0].up+2, Buffer); outtextxy( 15, 455, "Buscar --> n Contrato xxxx."); break; case 2: outtextxy( Tmp[1].left+2, Tmp[1].up+2, Clientes1_Buscar.Local ); outtextxy( 15, 455, "Buscar --> Nombre del Local."); break; case 3: sprintf(Buffer, "%s %s", Clientes1_Buscar.Nombre, Clientes1_Buscar.Apellido1); Buffer[15] = '\0'; outtextxy( Tmp[2].left+2, Tmp[2].up+2, Buffer ); outtextxy( 15, 455, "Buscar --> Nombre del Propietario."); break; case 4: sprintf(Buffer, "%12ld", Clientes1_Buscar.Telefono2); outtextxy( Tmp[3].left+2, Tmp[3].up+2, Buffer ); outtextxy( 15, 455, "Buscar --> Tel俧ono del Local."); } } } void Edit_Item_Clientes_CB(int Columna, struct boton *Tmp, struct Clientes *Clientes1_Buscar){ char Buffer[80]; setcolor(0); setfillstyle(SOLID_FILL, 0); bar((Tmp[0].left+2), Tmp[0].up+2, Tmp[0].right-2, Tmp[0].down - 2); bar((Tmp[1].left+2), Tmp[1].up+2, Tmp[1].right-2, Tmp[1].down - 2); bar((Tmp[2].left+2), Tmp[2].up+2, Tmp[2].right-2, Tmp[2].down - 2); bar((Tmp[3].left+2), Tmp[3].up+2, Tmp[3].right-2, Tmp[3].down - 2); switch(Columna) { case 1: // N de Contrato sprintf(Buffer, "%d", Clientes1_Buscar -> NContrato); do{ InputCadenaG( Buffer, 1, 4, 63, 57, Tmp[0]); }while( Clientes1_inx.Ncontrato_ocupado_SN[atoi(Buffer)]!=1); Clientes1_Buscar -> NContrato = atoi(Buffer); strcpy( Clientes1_Buscar -> Local, "\0" ); strcpy( Clientes1_Buscar -> Nombre, "\0" ); Clientes1_Buscar -> Telefono2 = -1; break; case 2: // Local InputCadenaG( Clientes1_Buscar -> Local, 0, 30, 63, 57, Tmp[1]); Clientes1_Buscar -> NContrato = -1; strcpy( Clientes1_Buscar -> Nombre, "\0" ); Clientes1_Buscar -> Telefono2 = -1; break; case 3: // Nombre InputCadenaG( Clientes1_Buscar -> Nombre, 0, 15, 63, 57, Tmp[2]); Clientes1_Buscar -> NContrato = -1; strcpy( Clientes1_Buscar -> Local, "\0" ); Clientes1_Buscar -> Telefono2 = -1; break; case 4: // Tel俧ono sprintf(Buffer, "%ld", Clientes1_Buscar -> Telefono2); InputCadenaG( Buffer, 1, 9, 63, 57, Tmp[3]); Clientes1_Buscar -> Telefono2 = atol(Buffer); Clientes1_Buscar -> NContrato = -1; strcpy( Clientes1_Buscar -> Local, "\0" ); strcpy( Clientes1_Buscar -> Nombre, "\0" ); break; } } int Sigue_Buscando_CB(struct Clientes Clientes1_Buscar){ int LSJ = sizeof(struct JD); int LSI = sizeof(struct Clientes_inx); int LSC = sizeof(struct Clientes); int ok = 0, CurrRecord; char Buffer[80], Buffer2[80], Buffer3[80]; int oldCTL= CurrTopLine_Clien1; int oldCR= CurrRow1_Clien; if( Comienzo_Busqueda == 0 ) { CurrTopLine_Clien1 = 1; CurrRow1_Clien = 1; } do{ CurrRecord = CurrTopLine_Clien1 + CurrRow1_Clien - 1; fseek(Clientes, (long)LSJ + LSI + ( LSC * CurrRecord ) - LSC, SEEK_SET); fread(&Clientes1, LSC, 1, Clientes); // if ( Clientes1_Buscar.NContrato != -1 ) { // Compara el n de contrato if ( Clientes1_Buscar.NContrato == Clientes1.NContrato ) ok = 1; CurrCol1_Clien = 1; } else if ( strlen(Clientes1_Buscar.Local) != 0 ) { // Compara la cadena de Local ( MAYUSCULAS = minusculas ) strncpy( Buffer, Clientes1.Local, strlen(Clientes1_Buscar.Local) ); Buffer[strlen(Clientes1_Buscar.Local)] = '\0'; if ( strcmpi(Clientes1_Buscar.Local, Buffer ) == 0 ) ok = 1; CurrCol1_Clien = 1; } else if ( strlen(Clientes1_Buscar.Nombre) != 0 ) { // Compara la cadena de Nombre ( MAYUSCULAS = minusculas ) strncpy( Buffer, Clientes1.Nombre, strlen(Clientes1_Buscar.Nombre) ); Buffer[strlen(Clientes1_Buscar.Nombre)] = '\0'; if ( strcmpi(Clientes1_Buscar.Nombre, Buffer ) == 0 ) ok = 1; CurrCol1_Clien = 2; } else if ( Clientes1_Buscar.Telefono2 != -1 ) { // Compara el tel俧ono sprintf(Buffer2, "%ld", Clientes1_Buscar.Telefono2); sprintf(Buffer3, "%ld", Clientes1.Telefono2); strncpy( Buffer, Buffer3, strlen(Buffer2) ); Buffer[strlen(Buffer2)] = '\0'; if ( strcmpi(Buffer2, Buffer ) == 0 ) ok = 1; CurrCol1_Clien = 3; } // if( ok != 1 ) CurrTopLine_Clien1++ ; }while(!ok && (CurrRecord-1)<= Clientes1_inx.Fin ); if ( ok == 0 ) { CurrTopLine_Clien1 = oldCTL; CurrRow1_Clien = oldCR; Se_Puede_Buscar = 0; Confirma("No se encontr", "equivalencia...", ""); Comienzo_Busqueda = 0; return NO_ENCONTRADO; } else { Se_Puede_Buscar = 1; return ENCONTRADO; } }