gest366/modules/ordini/actions.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;
}
?>