🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231093

Problem z właściwym sumowaniem

#231093
From: Dariusz Budyta
Date: Sun, 12 Jul 2015 16:27
301 lines
10470 bytes
Witam,
Suma na fakturze liczy dobrze jak jest jedna stawka VAT, jak jest ich więcej liczy mi z taką stawką jaka jest na pierwszej pozycji faktury, jestem jaszcze trochę cienki ale staram się doczytać - tyle że skończyły mi się pomysły?

Może ktoś mnie trochę wspomoże co robię źle?

<?php

require_once("dompdf/dompdf_config.inc.php");

require_once('database.php');
require_once('session.php');
require_once('common.php');

if(isset($_SESSION['idadministracja']))
	$idadministracja = $_SESSION['idadministracja'];
else
	$idadministracja = null;

$rodzaj_dokumentu = '';
$typ_dokumentu = '';
$md_nazwa = '';
$md_nip = '';
$md_ulica = '';
$md_miejscowosc = '';
$md_kod_pocztowy = '';
$md_telefon = '';
$kl_nazwa = '';
$kl_nip = '';
$kl_ulica = '';
$kl_miejscowosc = '';
$kl_kod_pocztowy = '';
$kl_telefon = '';
$data_wystawienia = '';
$data_sprzedazy = '';
$termin_zaplaty = '';
$zaplacono = '';
$slownie = '';
$waluta = '';
$platnosc = '';
$uwagi = '';
$pozycje = 1;
$numer_dokumentu = '';
$numer_konta = '';
$nazwa_banku = '';
$pozycje_buf = '';
$suma = '';
$sbrutto ='';	
$pozostalo = '';
$miejsce_wystawienia = '';
$duplikat = '';
$dzis = '';

$print_file = 'faktura.html';
$rachunek = false;

if(isset($_GET['nf']))
{
	$nf = $_GET['nf'];

	$ret = $db->Query('select N_Kier from import_faktury where nf=\''.$nf.'\'');
	
	$n_kier = $ret['N_Kier'];
	$ret;
	
	if($n_kier==null)
	{
		$ret = $db->Query('select *,
			(select round(sum(netto)*(100+svat))/100 from import_pozycje where nf=import_faktury.nf) as suma,
			DATE_FORMAT(DATE_ADD(dw, INTERVAL 7 DAY), \'%Y-%m-%d\') as tz 
			from import_faktury where nf=\''.$nf.'\'');
	}
	else
	{
		$ret = $db->Query('select *,
			(select sum(netto) from import_pozycje where nf=import_faktury.nf) as suma,
			DATE_FORMAT(DATE_ADD(dw, INTERVAL 7 DAY), \'%Y-%m-%d\') as tz 
			from import_faktury where nf=\''.$nf.'\'');
	}
	
	if($n_kier==null)
	{
		$md_nazwa = 'Zrzeszenie Transportu Prywatnego m.st. Warszawy';
		$md_nip = $ret['wnip'];
		$md_ulica = 'Al. Solidarności 104';
		$md_miejscowosc = 'Warszawa';
		$md_kod_pocztowy = '01-016';
		$md_telefon = '';
		$kl_nazwa = $ret['nazwa'];
		$kl_nip = $ret['onip'];
		$kl_ulica = $ret['fadres'];
		$kl_miejscowosc = $ret['fmiasto'];
		$kl_kod_pocztowy = $ret['fkod'];
		$data_wystawienia = $ret['dw'];
		$data_sprzedazy = $ret['ds'];
		$termin_zaplaty = $ret['tz'];
		$zaplacono = 0;
		require_once('cslownie.php');
		$s = new cSlownie($ret['suma']);
		$slownie = $s->slownie;
		$waluta = 'PLN';
		$platnosc = $ret['sz'];
		$uwagi = $ret['info'];
		$numer_dokumentu = $ret['nf'];
		$numer_konta = '52 1540 1157 2001 6614 0982 0001';
		$suma = $ret['suma'];
		$sbrutto = 0;
		$pozostalo = 0;
		$nazwa_banku = 'BOŚ S.A. II/O w Warszawie';
		$miejsce_wystawienia = 'Warszawa';
	}
	else
	{
		$md = $db->Query('select * from user where nip=\''.$ret['onip'].'\'');
		
		$print_file = 'fakturak.html';
		$kl_nazwa = 'Zrzeszenie Transportu Prywatnego m.st. Warszawy';
		$kl_nip = $ret['onip'];
		$kl_ulica = 'Al. Solidarności 104';
		$kl_miejscowosc = 'Warszawa';
		$kl_kod_pocztowy = '01-016';
		$kl_telefon = '';
		$md_nazwa = $md['nazwa'];
		$md_nip = $md['nip'];
		$md_ulica = $md['ulica'];
		$md_miejscowosc = $md['miejscowosc'];
		$md_kod_pocztowy = $ret['fkod'];
		$data_wystawienia = $ret['dw'];
		$data_sprzedazy = $ret['ds'];
		$termin_zaplaty = $ret['tz'];
		$zaplacono = 0;
		require_once('cslownie.php');
		$s = new cSlownie($ret['suma']);
		$slownie = $s->slownie;
		$waluta = 'PLN';
		//$platnosc = 'Przelew 7 dni';
		$uwagi = $ret['info'];
		$numer_dokumentu = $ret['nf'];
		//$numer_konta = '52 1540 1157 2001 6614 0982 0001';
		$suma = $ret['suma'];
		$pozostalo = 0;
		//$nazwa_banku = 'BOŚ S.A. II/O w Warszawie';
		$miejsce_wystawienia = 'Warszawa';
	}
	
	$ret = $db->Query('select DATE_FORMAT(now(), \'%Y-%m-%d\') as dzis');
	$dzis = $ret['dzis'];
	
	$pozycje_buf = '';
	
	$ret = $db->SQL('select *,
		(round((netto)*100)/100) as n
		from import_pozycje where nf=\''.$nf.'\'');
	$numer = 0;
	foreach($ret as $r)
	{
		$numer++;
		$dzial = $r['dzial'];
		$nazwa = $r['usl'];
		$pkwiu = '';//$r['pkwiu'];
		$ilosc = $r['ilosc'];
		$jm = 'szt';//$r['jm'];
		$_vat = $r['svat'];
		$vat = (float)$_vat;
		$wartosc_netto = $r['n'];
		$kwota_vat = 0;
		$wartosc_brutto = 0;
		$sbrutto = sum($wartosc_brutto);
		
		if($n_kier==null)
		{
			$kwota_vat = $wartosc_netto*($vat/100);
			$wartosc_brutto = $wartosc_netto+$kwota_vat;
			$_vat = $_vat.' %';
		}
		else
		{
			$kwota_vat = ($wartosc_netto/($vat+100))*$vat;
			$wartosc_brutto = $wartosc_netto;
			$wartosc_netto = ($wartosc_netto/($vat+100))*100;
			$_vat = 'ZW';
		}

		if(($vat==0)&&($n_kier!=null))
		{
			$rachunek = true;
			$pozycje_buf .= '<tr>
				<td style="text-align: center">'.$numer.'</td>
				<td>'.$dzial.'</td>
				<td>'.$nazwa.'</td>
				<td style="text-align: center">'.$ilosc.'</td>
				<td style="text-align: center">'.$jm.'</td>
				<td class="change_order_total_col">'.round00($wartosc_brutto).'</td>
				</tr>';
		}
		else
		{
			$pozycje_buf .= '<tr>
				<td style="text-align: center">'.$numer.'</td>
				<td>'.$dzial.'</td>
				<td>'.$nazwa.'</td>
				<td style="text-align: center">'.$ilosc.'</td>
				<td style="text-align: center">'.$jm.'</td>
				<td style="text-align: right;">'.round00($wartosc_netto).'</td>
				<td style="text-align: center;">'.$_vat.'</td>
				<td style="text-align: right;">'.round00($kwota_vat).'</td>
				<td class="change_order_total_col">'.round00($wartosc_brutto).'</td>
				</tr>';
		}
	}
}

if($rachunek)
	$print_file = 'rachunekk.html';
	
$buf = '';
$chunk = (1 << 21);
$fh = fopen($print_file, 'r+');
while(!feof($fh))
{
	$buf = fread($fh, $chunk);
}
fclose($fh);

$buf = str_replace('[md_nazwa]', $md_nazwa, $buf);
$buf = str_replace('[md_nip]', $md_nip, $buf);
$buf = str_replace('[md_ulica]', $md_ulica, $buf);
$buf = str_replace('[md_miejscowosc]', $md_miejscowosc, $buf);
$buf = str_replace('[md_kod_pocztowy]', $md_kod_pocztowy, $buf);
$buf = str_replace('[md_telefon]', 'Telefon: '.$md_telefon, $buf);
$buf = str_replace('[kl_nazwa]', $kl_nazwa, $buf);
$buf = str_replace('[kl_nip]', $kl_nip, $buf);
$buf = str_replace('[kl_ulica]', $kl_ulica, $buf);
$buf = str_replace('[kl_miejscowosc]', $kl_miejscowosc, $buf);
$buf = str_replace('[kl_kod_pocztowy]', $kl_kod_pocztowy, $buf);
$buf = str_replace('[kl_telefon]', 'Telefon: '.$kl_telefon, $buf);
$buf = str_replace('[typ_dokumentu]', $typ_dokumentu, $buf);
$buf = str_replace('[numer_dokumentu]', $numer_dokumentu, $buf);
$buf = str_replace('[data_wystawienia]', $data_wystawienia, $buf);
$buf = str_replace('[data_sprzedazy]', $data_sprzedazy, $buf);
$buf = str_replace('[termin_zaplaty]', $termin_zaplaty, $buf);
$buf = str_replace('[platnosc]', $platnosc, $buf);
$buf = str_replace('[numer_konta]', $numer_konta, $buf);
$buf = str_replace('[zaplacono]', round00($zaplacono), $buf);
$buf = str_replace('[waluta]', $waluta, $buf);
$buf = str_replace('[slownie]', $slownie, $buf);
if($uwagi!='')
	$buf = str_replace('[uwagi]', '<table style="padding: 10px; width: 100%;border: 1px solid rgb(0, 0, 0);font-size: 8pt;" class="header">
			<tr>
			<td>Uwagi: '.$uwagi.'</td>
			</tr>
			</table><br/>', $buf);
else
	$buf = str_replace('[uwagi]', '', $buf);
$buf = str_replace('[pozycje]', $pozycje_buf, $buf);
$buf = str_replace('[suma]', round00($suma), $buf);
$buf = str_replace('[pozostalo]', $pozostalo, $buf);
$buf = str_replace('[nazwa_banku]', $nazwa_banku, $buf);
$buf = str_replace('[miejsce_wystawienia]', $miejsce_wystawienia, $buf);
if(isset($_GET['duplikat'])&&($_GET['duplikat']=='true'))
{
	$buf = str_replace('[duplikat]', '<table style="width: 100%;" class="header">
		<tr>
		<td style="padding: 10px; border: 1px solid rgb(0, 0, 0);width: 33%;font-size: 8pt;">
		Duplikat faktury z dnia: <b>'.$dzis.'</b>
		</td>
		</tr>
		</table>', $buf);
}
else
	$buf = str_replace('[duplikat]', '', $buf);

$dompdf = new DOMPDF();
$dompdf->load_html($buf, 'UTF-8');
$dompdf->render();

$a = false;
if(isset($_GET['save'])&&($_GET['save']=='true'))
	$a = true;
	
$ret = $db->Query('select onip from import_faktury where nf=\''.$_GET['nf'].'\'');
$ret = $db->Query('select iduser from user where nip=\''.$ret['onip'].'\'');
$idu = $ret['iduser'];
	
if(isset($_GET['nf'])&&($iduser==$idu))
{
	if(isset($_GET['save'])&&($_GET['save']=='true'))
	{
		$db->Exec('update import_faktury set data_pobrania=now(), pobrano=pobrano+1 where nf=\''.$_GET['nf'].'\'');
		$db->Exec('update user set data_pobrania=now(), pobral=pobral+1 where iduser='.$iduser);
	}
	else
	{
		$db->Exec('update import_faktury set data_pobrania=now(), wydrukowano=wydrukowano+1 where nf=\''.$_GET['nf'].'\'');
		$db->Exec('update user set data_pobrania=now(), wydrukowal=wydrukowal+1 where iduser='.$iduser);
	}
}

if(($iduser==$idu)||(isset($idadministracja)&&($idadministracja!=null)))
	$dompdf->stream("dompdf_out.pdf", array("Attachment" => $a));

?>
Technical Details
Message-ID: <9ecf2928-3e4b-4d12-8383-9217f3a32d17@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.giganews.com!e109no438467qge.1!news-out.google.com!w15ni32517qge.0!nntp.google.com!z61no496147qge.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Received: by 10.13.247.133 with SMTP id h127mr30608748ywf.2.1436718439305;        Sun, 12 Jul 2015 09:27:19 -0700 (PDT)
X-Received: by 10.140.46.102 with SMTP id j93mr432415qga.4.1436718439257; Sun, 12 Jul 2015 09:27:19 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!newspeer1.nac.net!border2.nntp.dca1.giganews.com!nntp.giganews.com!e109no438467qge.1!news-out.google.com!w15ni32517qge.0!nntp.google.com!z61no496147qge.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.php
Date: Sun, 12 Jul 2015 09:27:19 -0700 (PDT)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=89.70.25.54; posting-account=uubveQoAAAAyhe8ojI_0uIXBprAYrcIW
NNTP-Posting-Host: 89.70.25.54
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9ecf2928-3e4b-4d12-8383-9217f3a32d17@googlegroups.com>
Subject: Problem z właściwym sumowaniem
From: Dariusz Budyta <dariusz.budyta@gmail.com>
Injection-Date: Sun, 12 Jul 2015 16:27:19 +0000
Lines: 317
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit