415 lines
14 KiB
PHP
415 lines
14 KiB
PHP
|
<?php
|
||
|
include_once(__DIR__."/../../core.php");
|
||
|
include($docroot."/modules/articoli/modutil.php");
|
||
|
|
||
|
$rs = $dbo->fetchArray("SELECT id,name FROM zz_modules WHERE id=\"".$id_module."\"");
|
||
|
$name = $rs[0]['name'];
|
||
|
|
||
|
|
||
|
$dir = "uscita";
|
||
|
|
||
|
|
||
|
$idordine = $id_record;
|
||
|
|
||
|
|
||
|
switch( $html->form('op', 'post') ){
|
||
|
case "add":
|
||
|
$idanagrafica = $html->form( 'idanagrafica', 'post' );
|
||
|
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
|
||
|
|
||
|
|
||
|
$data = saveDate( $_POST['data'] );
|
||
|
|
||
|
|
||
|
if( isset($_POST['idanagrafica']) ) {
|
||
|
$numero = get_new_numeroordine( $data );
|
||
|
$numero_esterno = get_new_numerosecondarioordine( $data );
|
||
|
//Tipo di pagamento predefinito dall'anagrafica
|
||
|
$query = "SELECT id FROM co_pagamenti WHERE id=(SELECT idpagamento FROM an_anagrafiche WHERE idanagrafica='".$idanagrafica."')";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$idpagamento = $rs[0]['id'];
|
||
|
|
||
|
//Se l'ordine è un ordine cliente e non è stato associato un pagamento predefinito al cliente leggo il pagamento dalle impostazioni
|
||
|
if( $dir=='entrata' && $idpagamento=='' )
|
||
|
$idpagamento = get_var("Tipo di pagamento predefinito");
|
||
|
|
||
|
$query = "INSERT INTO or_ordini( numero, numero_esterno, idanagrafica, idtipoordine, idpagamento, data, idstatoordine ) VALUES
|
||
|
( '".$numero."', '".$numero_esterno."', '$idanagrafica', '1', '$idpagamento', '$data', (SELECT `id` FROM `or_statiordine` WHERE `descrizione`='Non evaso') )";
|
||
|
$id_record = $dbo->query($query);
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Aggiunto ordine numero ".$numero."!" );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case "update":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
if( $idordine != '' ){
|
||
|
|
||
|
|
||
|
$numero_esterno = save( $_POST['numero_esterno'] );
|
||
|
$numero = save( $_POST['numero'] );
|
||
|
$data = saveDate( $_POST['data'] );
|
||
|
$note = save( $_POST['note'] );
|
||
|
$idstatoordine = save($_POST['idstatoordine']);
|
||
|
$idpagamento = save($_POST['idpagamento']);
|
||
|
$idsede = save($_POST['idsede']);
|
||
|
$idconto = save($_POST['idconto']);
|
||
|
$idagente = save($_POST['idagente']);
|
||
|
$totale_imponibile = get_imponibile_ordine($idordine);
|
||
|
$totale_ordine = get_totale_ordine($idordine);
|
||
|
$data_prevista_consegna = saveDate( $_POST['data_prevista_consegna'] );
|
||
|
|
||
|
if( $dir=='uscita' ){
|
||
|
$idrivalsainps = save($_POST['idrivalsainps']);
|
||
|
$idritenutaacconto = save($_POST['idritenutaacconto']);
|
||
|
$bollo = save($_POST['bollo']);
|
||
|
}
|
||
|
else{
|
||
|
$idrivalsainps = 0;
|
||
|
$idritenutaacconto = 0;
|
||
|
$bollo = 0;
|
||
|
}
|
||
|
|
||
|
//Leggo la descrizione del pagamento
|
||
|
$query = "SELECT descrizione FROM co_pagamenti WHERE id='".$idpagamento."'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$pagamento = $rs[0]['descrizione'];
|
||
|
|
||
|
//Query di aggiornamento
|
||
|
$query = "UPDATE or_ordini SET numero=\"".$numero."\", data=\"".$data."\", data_prevista_consegna=\"".$data_prevista_consegna."\", idagente='".$idagente."', idstatoordine='$idstatoordine', idpagamento=\"".$idpagamento."\", idsede=\"".$idsede."\", numero_esterno=\"$numero_esterno\", note=\"$note\", idconto=\"$idconto\", idrivalsainps=\"$idrivalsainps\", idritenutaacconto=\"$idritenutaacconto\", bollo=0, rivalsainps=0, ritenutaacconto=0 WHERE id=\"$idordine\"";
|
||
|
|
||
|
|
||
|
if( $dbo->query($query) ){
|
||
|
$query = "SELECT descrizione FROM or_statiordine WHERE id='$idstatoordine'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
|
||
|
//Ricalcolo inps, ritenuta e bollo (se l'ordine non è stato evaso)
|
||
|
if( $dir=='entrata' ){
|
||
|
if( $rs[0]['descrizione']!='Pagato' ){
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
if( $rs[0]['descrizione']!='Pagato' ){
|
||
|
ricalcola_costiagg_ordine($idordine, $idrivalsainps, $idritenutaacconto, $bollo);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Ordine modificato correttamente!" );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
case "addarticolo":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
if( $idordine != '' && isset($_POST['idarticolo']) ){
|
||
|
$idarticolo = save( $_POST['idarticolo'] );
|
||
|
// $idiva = save( $_POST['idiva'] );
|
||
|
$descrizione = save( $_POST['descrizione'] );
|
||
|
$lotto = save( $_POST['lotto'] );
|
||
|
$serial = save( $_POST['serial'] );
|
||
|
$altro = save( $_POST['altro'] );
|
||
|
$qta = force_decimal( $html->form('qta', 'post') );
|
||
|
$prezzo_vendita = force_decimal( $html->form('prezzo', 'post') );
|
||
|
// $sconto = force_decimal( $html->form('sconto', 'post') );
|
||
|
// $sconto = $sconto*$qta;
|
||
|
|
||
|
$idtiposconto = save( $_POST['idtiposconto'] );
|
||
|
$sconto = force_decimal($_POST['sconto']);
|
||
|
$sconto_extra = force_decimal($_POST['sconto_extra']);
|
||
|
$sconto_extra1 = force_decimal($_POST['sconto_extra1']);
|
||
|
|
||
|
$query = "SELECT idiva_vendita FROM mg_articoli WHERE id='".$idarticolo."'";
|
||
|
$rs = $dbo->fetchArray( $query );
|
||
|
$idiva = $rs[0]['idiva_vendita'];
|
||
|
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_prc = $sconto;
|
||
|
$sconto = ($prezzo_vendita * $sconto_prc)/100;
|
||
|
}else{
|
||
|
$sconto_prc = $sconto;
|
||
|
}
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_extra = $sconto_extra;
|
||
|
$sconto1 = (($prezzo_vendita - $sconto) * $sconto_extra)/100;
|
||
|
}else{
|
||
|
$sconto1 = $sconto_extra;
|
||
|
}
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_extra1 = $sconto_extra1;
|
||
|
$sconto2 = (($prezzo_vendita - $sconto - $sconto1 ) * $sconto_extra1)/100;
|
||
|
}else{
|
||
|
$sconto2 = $sconto_extra1;
|
||
|
}
|
||
|
$sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta;
|
||
|
|
||
|
|
||
|
|
||
|
add_articolo_inordine( $idordine, $idarticolo, $descrizione, $idiva, $qta, $prezzo_vendita*$qta, $sconto, $lotto, $serial, $altro ,$idtiposconto , $sconto_prc ,$sconto_extra ,$sconto_extra1);
|
||
|
|
||
|
array_push( $_SESSION['infos'], "1Articolo aggiunto!" );
|
||
|
}
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
case "addriga":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
if( $idordine != '' ){
|
||
|
//Selezione costi da intervento
|
||
|
$descrizione = save( $_POST['descrizione'] );
|
||
|
$importo_manuale = force_decimal( $html->form('subtot', 'post') );
|
||
|
$qta = force_decimal( $html->form('qta', 'post') );
|
||
|
$idiva = save($_POST['idiva']);
|
||
|
$um = save($_POST['um']);
|
||
|
$subtot = $importo_manuale*$qta;
|
||
|
$idtiposconto = save( $_POST['idtiposconto'] );
|
||
|
$sconto = force_decimal($_POST['sconto']);
|
||
|
$sconto_extra = force_decimal($_POST['sconto_extra']);
|
||
|
$sconto_extra1 = force_decimal($_POST['sconto_extra1']);
|
||
|
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_prc = $sconto;
|
||
|
$sconto = ($importo_manuale * $sconto_prc)/100;
|
||
|
}else{
|
||
|
$sconto_prc = $sconto;
|
||
|
}
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_extra = $sconto_extra;
|
||
|
$sconto1 = (($importo_manuale - $sconto) * $sconto_extra)/100;
|
||
|
}else{
|
||
|
$sconto1 = $sconto_extra;
|
||
|
}
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_extra1 = $sconto_extra1;
|
||
|
$sconto2 = (($importo_manuale - $sconto - $sconto1 ) * $sconto_extra1)/100;
|
||
|
}else{
|
||
|
$sconto2 = $sconto_extra1;
|
||
|
}
|
||
|
$sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta;
|
||
|
|
||
|
|
||
|
|
||
|
//Calcolo iva
|
||
|
$query = "SELECT percentuale, indetraibile FROM co_iva WHERE id='$idiva'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$iva = ($subtot-$sconto)/100*$rs[0]['percentuale'];
|
||
|
$iva_indetraibile = $iva/100*$rs[0]['indetraibile'];
|
||
|
|
||
|
$query = "INSERT INTO or_righe_ordini( idordine, idiva, iva, iva_indetraibile, descrizione, subtotale, sconto, um, qta , tipo_sconto , sconto_primo,sconto_extra,sconto_extra1) VALUES
|
||
|
( \"$idordine\", \"$idiva\", \"$iva\", \"$iva_indetraibile\", \"$descrizione\", \"$subtot\", \"$sconto\", \"$um\", \"$qta\" , \"$idtiposconto\", \"$sconto_prc\", \"$sconto_extra\", \"$sconto_extra1\" )";
|
||
|
|
||
|
if( $dbo->query($query) ){
|
||
|
array_push( $_SESSION['infos'], "Riga aggiunta!" );
|
||
|
|
||
|
//Ricalcolo inps, ritenuta e bollo
|
||
|
if( $dir=='entrata' ){
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
|
||
|
//Scollegamento articolo da ordine
|
||
|
case "unlink_articolo":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
$idarticolo = $html->form( 'idarticolo', 'post' );
|
||
|
$idriga = $html->form( 'idriga', 'post' );
|
||
|
|
||
|
if( $idordine != '' && $idarticolo != '' ){
|
||
|
rimuovi_articolo_daordine( $idarticolo, $idordine, $idriga );
|
||
|
|
||
|
//if( $dbo->query($query) ){
|
||
|
//Ricalcolo inps, ritenuta e bollo
|
||
|
if( $dir == 'entrata' ){
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
ricalcola_costiagg_ordine($idordine, 0, 0, 0);
|
||
|
}
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Articolo rimosso!" );
|
||
|
}
|
||
|
//}
|
||
|
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
//Scollegamento riga generica da ordine
|
||
|
case "unlink_riga":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
$idriga = $html->form( 'idriga', 'post' );
|
||
|
|
||
|
if( $idordine != '' && $idriga != '' ){
|
||
|
$query = "DELETE FROM or_righe_ordini WHERE idordine=\"$idordine\" AND id=\"$idriga\"";
|
||
|
|
||
|
$dbo->query($query);
|
||
|
|
||
|
//Ricalcolo inps, ritenuta e bollo
|
||
|
if( $dir=='entrata' ){
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
|
||
|
else{
|
||
|
ricalcola_costiagg_ordine($idordine, 0, 0, 0);
|
||
|
}
|
||
|
|
||
|
array_push( $_SESSION['infos'], "Riga rimossa!" );
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
//Modifica riga
|
||
|
case "editriga":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
if( isset($_POST['idriga']) ){
|
||
|
$idriga = $html->form('idriga', 'post');
|
||
|
$descrizione = save( $_POST['descrizione'] );
|
||
|
$importo_manuale = save( $_POST['subtot'] );
|
||
|
$importo_manuale = str_replace( ",", ".", $importo_manuale );
|
||
|
$qta = save($_POST['qta']);
|
||
|
$qta = str_replace( ",", ".", $qta );
|
||
|
$idiva = save($_POST['idiva']);
|
||
|
$um = save($_POST['um']);
|
||
|
$subtot = $importo_manuale*$qta;
|
||
|
$idtiposconto = save( $_POST['idtiposconto'] );
|
||
|
$sconto = force_decimal($_POST['sconto']);
|
||
|
$sconto_extra = force_decimal($_POST['sconto_extra']);
|
||
|
$sconto_extra1 = force_decimal($_POST['sconto_extra1']);
|
||
|
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_prc = $sconto;
|
||
|
$sconto = ($importo_manuale*$sconto_prc)/100;
|
||
|
}else{
|
||
|
$sconto_prc = $sconto;
|
||
|
}
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_extra = $sconto_extra;
|
||
|
$sconto1 = (($importo_manuale - $sconto) * $sconto_extra)/100;
|
||
|
}else{
|
||
|
$sconto1 = $sconto_extra;
|
||
|
}
|
||
|
if($idtiposconto=='2'){
|
||
|
$sconto_extra1 = $sconto_extra1;
|
||
|
$sconto2 = (($importo_manuale - $sconto - $sconto1) * $sconto_extra1)/100;
|
||
|
}else{
|
||
|
$sconto2 = $sconto_extra1;
|
||
|
}
|
||
|
$sconto = ( $sconto + $sconto1 + $sconto2 ) *$qta;
|
||
|
|
||
|
|
||
|
//Calcolo iva
|
||
|
$query = "SELECT * FROM co_iva WHERE id='".$idiva."'";
|
||
|
$rs = $dbo->fetchArray($query);
|
||
|
$iva = ($subtot-$sconto)/100*$rs[0]['percentuale'];
|
||
|
$iva_indetraibile = $iva/100*$rs[0]['indetraibile'];
|
||
|
$desc_iva = $rs[0]['descrizione'];
|
||
|
|
||
|
|
||
|
//Modifica riga generica sul documento
|
||
|
$query = "UPDATE or_righe_ordini SET idiva=\"".$idiva."\", iva=\"".$iva."\", iva_indetraibile=\"".$iva_indetraibile."\", descrizione=\"".$descrizione."\", subtotale=\"".$subtot."\", sconto=\"".$sconto."\",
|
||
|
um=\"".$um."\", qta=\"".$qta."\" , tipo_sconto=\"".$idtiposconto."\" , sconto_primo=\"".$sconto_prc."\" , sconto_extra=\"".$sconto_extra."\" , sconto_extra1=\"".$sconto_extra1."\" WHERE id=\"".$idriga."\"";
|
||
|
if( $dbo->query($query) ){
|
||
|
array_push( $_SESSION['infos'], "Riga modificata!" );
|
||
|
|
||
|
//Ricalcolo inps, ritenuta e bollo
|
||
|
if( $dir=='entrata' )
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
else
|
||
|
ricalcola_costiagg_ordine($idordine);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
|
||
|
//eliminazione ordine
|
||
|
case "delete":
|
||
|
if( $modules_info[$module_name]["permessi"] == 'rw' ){
|
||
|
if( isset( $_GET['id_record'] ) ){
|
||
|
// scollego eventuali articoli in ordine associati ad un documento
|
||
|
$dbo->query("UPDATE co_righe_documenti SET idordine='0' WHERE idordine='".$idordine."'");
|
||
|
$dbo->query( "DELETE FROM or_ordini WHERE id='$idordine'" );
|
||
|
// svuoto eventuali seriali arrivati
|
||
|
$q = "SELECT idarticolo, id FROM or_righe_ordini WHERE idordine='".$idordine."'";
|
||
|
$rsr = $dbo->fetchArray($q);
|
||
|
for( $i=0; $i < sizeof($rsr); $i++ ){
|
||
|
// svuoto seriali precedeneti
|
||
|
$dbo->query( "DELETE FROM mg_prodotti WHERE idarticolo='".$rsr[$i]['idarticolo']."' and id_riga_ordine='".$rsr[$i]['id']."'");
|
||
|
}
|
||
|
$dbo->query( "DELETE FROM or_righe_ordini WHERE idordine='$idordine'" );
|
||
|
array_push( $_SESSION['infos'], "Ordine eliminato!" );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
case "add_seriale":
|
||
|
$idriga = $html->form('idriga', 'post');
|
||
|
|
||
|
$q = "SELECT * FROM or_righe_ordini WHERE idordine='".$idordine."' AND id='".$idriga."'";
|
||
|
$rsr = $dbo->fetchArray($q);
|
||
|
$idarticolo=$rsr[0]['idarticolo'];
|
||
|
|
||
|
// svuoto seriali precedeneti
|
||
|
$dbo->query( "DELETE FROM mg_prodotti WHERE idarticolo='".$idarticolo."' and id_riga_ordine='".$idriga."'");
|
||
|
|
||
|
//Lettura di tutte le righe della tabella in arrivo
|
||
|
for( $i=0; $i<$rsr[0]['qta']; $i++ ){
|
||
|
//Processo solo le righe da evadere
|
||
|
$seriale=$_POST['ser_'][$i];
|
||
|
if ($seriale != '') {
|
||
|
//Creo la query per le combinazioni prodotto con ogni combinazione
|
||
|
$query = "INSERT INTO mg_prodotti( idarticolo, serial , data , id_riga_ordine , dir ) VALUES ('".$idarticolo."' , '".$seriale."', NOW(),'".$idriga."','uscita')";
|
||
|
if( $dbo->query($query) ){
|
||
|
array_push( $_SESSION['infos'], "Inserito seriale : ".$seriale);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
|
||
|
case "sendemail":
|
||
|
$from_address = str_replace( ",", ".", get_var("Indirizzo per le email in uscita") );
|
||
|
$oggetto = html_entity_decode($_POST['oggetto']);
|
||
|
$allegato = $_POST['allegato'];
|
||
|
$testo_email = $_POST['body'];
|
||
|
$destinatario=$_POST['destinatario'];
|
||
|
$messaggio = new PHPmailer(str_replace( ",", ".", get_var("Indirizzo per le email in uscita") ));
|
||
|
$messaggio->FromName = str_replace( ",", ".", get_var("Nome Form Mail") );
|
||
|
$messaggio->AddAddress($destinatario);
|
||
|
$mail_cc=str_replace( ",", ".", get_var("Destinatario fisso in copia (campo CC)"));
|
||
|
if ($mail_cc =""){
|
||
|
$messaggio->AddCC($mail_cc);
|
||
|
}
|
||
|
$messaggio->Subject=($oggetto);
|
||
|
$messaggio->Body=strip_tags($testo_email);
|
||
|
$messaggio->AddAttachment( $allegato );
|
||
|
if(!$messaggio->Send()){
|
||
|
array_push( $_SESSION['infos'], $messaggio->ErrorInfo );
|
||
|
|
||
|
}else{
|
||
|
array_push( $_SESSION['infos'], "Email inviata correttamente" );
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
?>
|