Ignore:
Timestamp:
Jul 13, 2011, 2:20:53 PM (13 years ago)
Author:
chronos
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • import/navision_csv/UMainForm.pas

    r10 r11  
    1818    { private declarations }
    1919  public
    20     { public declarations }
     20    function CheckVAT(VAT: string): Boolean;
    2121  end;
    2222
     
    3434  Source, Dest: TStringList;
    3535  I: Integer;
     36  P: Integer;
    3637  DestLine: TStringList;
    3738  Line: TStringList;
     39  VAT: string;
    3840begin
    3941  try
     
    5052    DestLine.Add('address/city');
    5153    DestLine.Add('vatin');
    52     DestLine.Add('vat');
     54    //DestLine.Add('vat');
    5355    DestLine.Add('address/zip');
    54     DestLine.Add('address/country_id');
     56    //DestLine.Add('address/country_id');
    5557    DestLine.Add('address/phone');
    5658    DestLine.Add('address/fax');
     
    5860    Dest.Add(DestLine.CommaText);
    5961
    60     for I := 0 to Source.Count - 1 do begin
     62    for I := 1 to Source.Count - 1 do begin
    6163      DestLine.Clear;
    6264      Line.CommaText := Source[I];
     65
     66      //VAT := Trim(Line[8]);
     67      //if not CheckVAT(VAT) then VAT := '';
     68
    6369      DestLine.Add('' + Line[3] + '');
    6470      DestLine.Add('' + Line[4] + '');
     
    6672      DestLine.Add('' + Line[6] + '');
    6773      DestLine.Add('' + Line[7] + '');
    68       DestLine.Add('' + Line[8] + '');
     74      //DestLine.Add('' + VAT + '');
    6975      DestLine.Add('' + Line[14] + '');
    70       DestLine.Add('' + Line[15] + '');
     76      //DestLine.Add('' + Line[15] + '');
    7177      DestLine.Add('' + Line[16] + '');
    7278      DestLine.Add('' + Line[17] + '');
     
    8389end;
    8490
     91function TForm1.CheckVAT(VAT: string): Boolean;
     92var
     93  VATNum: string;
     94  Checksum: Integer;
     95  VATChecksum: Integer;
     96  P: Integer;
     97begin
     98  VATNum := '';
     99  Checksum := 0;
     100
     101  P := 1;
     102  while (P < Length(VAT)) and not ((VAT[P] >= '0') and (VAT[P] <= '9')) do Inc(P);
     103  if (P < Length(VAT)) then VATNum := Copy(VAT, P, 255);
     104  Memo1.Lines.Add(VAT + ': ' + IntToStr(P) + ': ' + VATNum);
     105  VATChecksum := StrToInt(Copy(VATNum, Length(VATNum) - 1, 2));
     106  VATNum := Copy(VATNum, 1, Length(VATNum) - 2);
     107  if VATNum <> '' then begin
     108    for P := 1 to Length(VATNum) do begin
     109      if P > 7 then begin
     110        Result := False;
     111        Break;
     112      end;
     113      Checksum := Checksum + StrToInt(VATNum[P]) * (9 - P);
     114    end;
     115    while Checksum >= 0 do Checksum := Checksum - 97;
     116    Result := Abs(CheckSum) = VATChecksum;
     117  end else Result := False;
     118end;
     119
    85120end.
    86121
Note: See TracChangeset for help on using the changeset viewer.