🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Problem z właściwym sumowaniem

#231094
From: Dariusz Budyta
Date: Sun, 12 Jul 2015 18:57
306 lines
11383 bytes
W dniu niedziela, 12 lipca 2015 18:27:21 UTC+2 użytkownik Dariusz Budyta napisał:
> 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));
> 
> ?>

Zastosowanie:
$buf = str_replace('[suma]', round00($wartosc_brutto), $buf);
zwrociło mi ostatnią wartość brutto - zależy mi na tym aby zwracało sumę tych wartośći brutto
Technical Details
Message-ID: <4c9b067d-a24e-46e3-ba29-494470a27ba7@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!pg9no159855igb.0!news-out.google.com!w15ni32543qge.0!nntp.google.com!z61no522113qge.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <9ecf2928-3e4b-4d12-8383-9217f3a32d17@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.182.91.6 with SMTP id ca6mr42201500obb.29.1436727477309;        Sun, 12 Jul 2015 11:57:57 -0700 (PDT)
X-Received: by 10.140.98.117 with SMTP id n108mr76659qge.23.1436727477201; Sun, 12 Jul 2015 11:57:57 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!pg9no159855igb.0!news-out.google.com!w15ni32543qge.0!nntp.google.com!z61no522113qge.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.php
Date: Sun, 12 Jul 2015 11:57:57 -0700 (PDT)
In-Reply-To: <9ecf2928-3e4b-4d12-8383-9217f3a32d17@googlegroups.com>
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
References: <9ecf2928-3e4b-4d12-8383-9217f3a32d17@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4c9b067d-a24e-46e3-ba29-494470a27ba7@googlegroups.com>
Subject: Re: Problem z właściwym sumowaniem
From: Dariusz Budyta <dariusz.budyta@gmail.com>
Injection-Date: Sun, 12 Jul 2015 18:57:57 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit