Program pre spr8vu objednávok žalúzií.

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategórie: Programy v Pascalu
zaluzie.pngProgram: Zaluzie.pasArchiv.pasDealer.pasFarba.pasFax.pasFilter.pasFormul.pasFyzic.pasHelp.pasKniznic.pasMiesto.pasMzdy.pasOption.pasPr_zal.pasRead_dbf.pasRedef.pasSdv.pasTlac.pasTrsek.pasZaluz.pasZostavy.pas
Soubor exe: Zaluzie.exe
Potřebné: Zaluzie.zipHelp.datDealerDealer.$$$Fax.datKumuly.$$$Kumuly.frmKumuly.kumMeracMontazOption.dbfOption.frmOption.indPoradie.datVystup.txtZaluzie.dbfZaluzie.datZaluzie.frmZaluzie.indZaluzie.txtZostava.frm

Program bol vytvorený pre vnutorné potreby firmy KOMA pre spravu objednávok žalúzií.

Bližší popis jednotlivých funkcií:
F2 - Zalúzia
Slúži ako nosná časť celého tohto programu dajú sa v ňom zadávať informácie o objednávateľovi ako jeho MENO, ADRESA, PODLAŽIE.
Kvôli neskorším rozpisom je možné vyplniť (ŠTVRŤ) program sa potom bude týmto riadiť.
Ďalej informácie o tom kto bol dohadzovač (DEALER), kto odmeriaval žalúziu (MERAČ) a nakoniec mená až troch (MONTÁŽNIKOV).
Je možné ďalej vyplniť DATUM OBJEDNAVKY, s tým, že program okamžite prepočíta kedy uplyie doba 14 dní na vykonanie montáže (LEHOTA).
Ak je nám známa CENA žalúzie po je vyplnení okamžite vypočítava DOPLATOK. Po vyplnení ZALOHY je vypočítaný doplatok znova.
Pri vyplňovaní mzdových nákladov máme približný mzdový charakter pre jednotlivých zainteresovaných.
Žalúzie sa vypĺňajú intuitívne pričom ak nie je zadaná farba nie je možné vyplniť žalúziu ďalšiu.

Číselníky pre STVRT, DEALER, MERAC, MONTAZNIK, FARBA sú aktivované okamžite po stlačení klávesy ENTER. Potom si stačí vybrať potrebné a znova stlačiť ENTER. Ak však má užívateľ čísla v krvi stačí napísať priamo číslo program si už neako poradí sám.

F3 - DEALER, F5 - MERAC, F6 - MONTAZ, F4 - FARBA
Okno pre doplnenie číselníka dealerov (meračov, montážnikov farieb). Pohyb šipkami, ESC - koniec práce, DEL - označ dealera na zmazanie.

F4 - ULICA
Okno pre doplnenie číselníka ulíc. Ostatné ako u DEALER. Ak však stlacíte ENTER na položke vpravo objaví sa vám okno MESTO, kde si vyberiete do akého mesta potrí ulica. Aj v meste je ešte možné vybrať KRAJ. ( Upozorňujem, že názvy sú pracovné. Znamená, že ich použitie môže byť iné).
{ SDV.PAS                   Copyright (c) TrSek alias Zdeno Sekerak }
{ Unit pre pracu s DBF subormi.                                     }
{                                                                   }
{ Datum:19.06.1995                            http://www.trsek.com  }
 
unit simply_view_DBF;
 
interface
uses crt,dos;
const max_viet=100;    { max - kolko moze byt maximalne premennych v 1 vete }
 
type premenna=(C,L,N,D);
                       { typ premennej C-retazec, L-logicka, N-numericka }
                       {               D-datum }
   hlava=record                     { typ tzv. hlavy DBF blizie informacie }
     nazov: array[1..11] of char;   { na horeuvedenej adrese }
     typep: char;
       zac: word;
     none2: array[1..2] of byte;
      size: byte;
     desat: byte;
     none3: array[1..14] of byte;
     end;
 
var  base: array[1..max_viet] of string;   { polozky jednej vety                  }
    hlavy: array[1..max_viet] of hlava;    { hlavy (popisy) kazdej z poloziek     }
        f: file of char;                   { nacitava jednotlive vety DBF         }
       ff: file of hlava;                  { nacitava hlavy DBF                   }
    poc,dtab,dvet: word;                   { poc-pocet viet, dtab-dlzka tabulky   }
                                           { hlavy, dvet-velkost jednej vety v kB }
      den,mes,rok: byte;                   { den,mesiac,rok z DBF                 }
           typdbf: byte;                   { typ dBase, prvy byt DBF              }
           pp,rpp: integer;                { pp-pocet premennych vo vete          }
                                           { rpp-kolko premennych vypisat z vety  }
          nothing: string;
          AllSize: LongInt;                { celkova velkost suboru DBF }
             meno: string;                 { meno suboru                          }
              i,x: integer;                { pomocne premenne }
               ch: char;
 
procedure opendbase;
procedure vety(i:word);
implementation
 
procedure opendbase;                    { otvor DBF a precitaj z nej hlavy }
var sub:SearchRec;
begin
 
 assign(f,meno);
 {$I-}
 reset(f);
 {$I+}                                  { ak DBF nejestvuje }
 if ioresult<>0 then begin
    writeln('Subor bud nejestvuje, alebo nieje spravna cesta.');
    halt(1);
    end;
 
 findfirst(meno,Archive,Sub);           { zisti jeho velkost }
 AllSize:=Sub.Size;
 read(f,ch);typdbf:=ord(ch);            { precitaj uvodne info typ dBase      }
 read(f,ch);rok:=ord(ch);               { den, mesiac, rok poslednej editacie }
 read(f,ch);mes:=ord(ch);
 read(f,ch);den:=ord(ch);
 
 read(f,ch);poc:=ord(ch);
 read(f,ch);poc:=poc+256*ord(ch);
 for i:=1 to 3 do read(f,ch);
                                        { zisti velkost tabulky hlav }
 dtab:=ord(ch);read(f,ch);dtab:=dtab+256*ord(ch);
 pp:=round(dtab/32)-1;                  { dtab/32-1= pocet premennych }
 if pp>20 then rpp:=20                  { v jednej vete               }
          else rpp:=pp;
                                        { ale vypisuje najviac 20 z jednej vety }
 read(f,ch);dvet:=ord(ch);
 read(f,ch);dvet:=dvet+256*ord(ch);     { zisti dlzku jednej vety }
 close(f);
 
 assign(ff,meno);
 reset(ff);
 read(ff,hlavy[1]);                     { toto precita hlavu hlav }
                                        { pekne sprosto som to nazval }
 for i:=1 to pp do
  read(ff,hlavy[i]);                    { toto cita hlavu kazdej premennej }
 close(ff);                             { co vsetko obsahuje ??? }
                                        { kontakt na programatora je v zahlavy }
 for i:=1 to pp do
  case hlavy[i].typep of                { nastavi velkost premennych pre jednotlive }
                                        { premenne podla hlavy }
   'C':base[i]:=copy(nothing,1,hlavy[i].size);
   'L':base[i]:=copy(nothing,1,1);
   'N':if hlavy[i].desat>0 then base[i]:=copy(nothing,1,hlavy[i].size)
                           else base[i]:=copy(nothing,1,hlavy[i].size+hlavy[i].desat);
   'D':base[i]:=copy(nothing,1,8);
   end;
 
end;
 
procedure vety(i:word);
begin
 
 assign(f,meno);
 reset(f);
 if ((dtab+1+i*dvet)>AllSize) or
    ((dtab+(i+1)*dvet)>AllSize) then begin close(f); exit; end;
                                        { veta nejestvuje skonci          }
 seek(f,dtab+1+i*dvet);                 { nastavi poziciu kde zacina veta }
 
 for x:=1 to pp do                      { nastrka to do premennych }
  for i:=1 to length(base[x]) do read(f,base[x][i]);
 
 close(f);                              { po kazdom precitani pre istotu }
                                        { zavrie subor. }
                                        { Co ak by sa mu nieco stalo !!! }
end;
 
end.