GlisWeb framework
_fattura.crea.php
Vai alla documentazione di questo file.
1 <?php
2 
14  // inclusione del framework
15  require '../../../../../_src/_config.php';
16 
17 
18  // inizializzo l'array del risultato
19  $status = array();
20 
21  // array dei messaggi d'errore
22  $status['msg'] = array();
23 
24 
25  // verifica dati
26  if( isset( $_REQUEST['id'] ) ) {
27 
28  // lock delle tabelle della coda
29  $lock = mysqlQuery( $cf['mysql']['connection'], 'LOCK TABLES documenti_amministrativi WRITE, righe_documenti_amministrativi WRITE, scadenze WRITE' );
30 
31  $nota = mysqlSelectRow( $cf['mysql']['connection'],
32  'SELECT * FROM documenti_amministrativi WHERE id = ? AND id_tipologia = 5',
33  array(array( 's' => $_REQUEST['id'] )));
34  logWrite( 'nota pro dorma id '.$_REQUEST['id'], 'task', LOG_ERR );
35 
36  if( isset( $nota ) )
37  {
38  //se l'id appartiene ad una nota proforma preparo l'insrimento
39 
40  //calcolo il numero della fattura da inserire
41  $numeroFattura = (int)mysqlSelectValue($cf['mysql']['connection'],
42  'SELECT numero FROM documenti_amministrativi WHERE id_emittente = ? AND id_tipologia = 1 AND YEAR(data) = YEAR(now()) ORDER BY numero DESC',
43  array(array( 's' => $nota['id_emittente'] )))+1;
44 
45  //inserisco la fattura
46  $idFattura = mysqlQuery($cf['mysql']['connection'],
47  'INSERT INTO documenti_amministrativi ( id_tipologia, numero, sezione, data, id_emittente, id_cliente, nome, note_cliente, note_interne ) '.
48  'VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? )',
49  array(
50  array( 's' => '1' ),
51  array( 's' => $numeroFattura ),
52  array( 's' => $nota['sezione'] ),
53  array( 's' => date('Y/m/d',time()) ),
54  array( 's' => $nota['id_emittente'] ),
55  array( 's' => $nota['id_cliente'] ),
56  array( 's' => $nota['nome'] ),
57  array( 's' => 'riferimento nota pro forma numero '. $nota['numero'].' del '.$nota['data'] ),
58  array( 's' => $nota['note_interne'] )
59  ));
60 
61  if( isset($idFattura) )
62  {//se la fattura è stata inserita correttamente
63  //duplicazione righe
64  $genitori = mysqlQuery( $cf['mysql']['connection'],'SELECT * FROM righe_documenti_amministrativi WHERE id_documento = ? AND '.
65  'id_riferimento IS NULL AND id_genitore IS NULL', array(array( 's' => $nota['id'] )));
66  //duplicazione righe
67  if(sizeof($genitori)>0){
68  // logWrite( 'righe genitori '.sizeof($genitori), 'task', LOG_ERR );
69  foreach($genitori as $genitore ){
70  // logWrite( 'genitore '.$genitore['id'], 'task', LOG_ERR );
71  $idGenitore = mysqlQuery($cf['mysql']['connection'],
72  'INSERT INTO righe_documenti_amministrativi (id_tipologia, id_emittente, id_cliente, id_documento, id_progetto, id_task, id_attivita, '.
73  'id_articolo, id_udm, quantita, id_listino, id_valuta, importo_netto_totale, importo_netto_totale_non_scontato, id_iva, nome, testo, ordine, data_lavorazione, data_fatturabile, data_scadenza ) '.
74  'VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )',
75  array(
76  array( 's' => '1' ),
77  array( 's' => $genitore['id_emittente'] ), array( 's' => $genitore['id_cliente'] ), array( 's' => $idFattura),
78  array( 's' => $genitore['id_progetto'] ), array( 's' => $genitore['id_task'] ), array( 's' => $genitore['id_attivita'] ),
79  array( 's' => $genitore['id_articolo'] ), array( 's' => $genitore['id_udm'] ), array( 's' => $genitore['quantita'] ),
80  array( 's' => $genitore['id_listino'] ), array( 's' => $genitore['id_valuta'] ), array( 's' => $genitore['importo_netto_totale'] ),
81  array( 's' => $genitore['importo_netto_totale_non_scontato'] ),array( 's' => $genitore['id_iva'] ), array( 's' => $genitore['nome'] ),
82  array( 's' => $genitore['testo']), array( 's' => $genitore['ordine']), array( 's' => $genitore['data_lavorazione']),
83  array( 's' => $genitore['data_fatturabile']), array( 's' => $genitore['data_scadenza'])));
84  $update = mysqlQuery( $cf['mysql']['connection'],'UPDATE righe_documenti_amministrativi SET id_riferimento = ? WHERE id = ?',
85  array(array( 's' => $idGenitore ),array( 's' => $genitore['id'] ) ));
86  $righe = mysqlQuery( $cf['mysql']['connection'],'SELECT * FROM righe_documenti_amministrativi WHERE id_genitore = ? AND id_riferimento IS NULL',
87  array(array( 's' => $genitore['id'] )));
88  if(sizeof($righe)>0){
89  // logWrite( 'righe figlie di '.$genitore['id'] .' sono '.sizeof($genitori), 'task', LOG_ERR );
90  foreach ($righe as $riga ){
91  // logWrite( 'riga '.$riga['id'].' id genitore '.$idGenitore, 'task', LOG_ERR );
92  $idRiga = mysqlQuery($cf['mysql']['connection'],
93  'INSERT INTO righe_documenti_amministrativi (id_genitore, id_tipologia, id_emittente, id_cliente, id_documento, id_progetto, id_task, id_attivita, '.
94  'id_articolo, id_udm, quantita, id_listino, id_valuta, importo_netto_totale, importo_netto_totale_non_scontato, id_iva, nome, testo, ordine, data_lavorazione, data_fatturabile, data_scadenza ) '.
95  'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )',
96  array(
97  array( 's' => $idGenitore ), array( 's' => '1' ),
98  array( 's' => $riga['id_emittente'] ), array( 's' => $riga['id_cliente'] ), array( 's' => $idFattura),
99  array( 's' => $riga['id_progetto'] ), array( 's' => $riga['id_task'] ), array( 's' => $riga['id_attivita'] ),
100  array( 's' => $riga['id_articolo'] ), array( 's' => $riga['id_udm'] ), array( 's' => $riga['quantita'] ),
101  array( 's' => $riga['id_listino'] ), array( 's' => $riga['id_valuta'] ), array( 's' => $riga['importo_netto_totale'] ),
102  array( 's' => $riga['importo_netto_totale_non_scontato'] ),array( 's' => $riga['id_iva'] ), array( 's' => $riga['nome'] ),
103  array( 's' => $riga['testo']), array( 's' => $riga['ordine']), array( 's' => $riga['data_lavorazione']),
104  array( 's' => $riga['data_fatturabile']), array( 's' => $riga['data_scadenza'])));
105 // logWrite( 'righa '.$idRiga, 'task', LOG_ERR );
106  $update = mysqlQuery( $cf['mysql']['connection'],
107  'UPDATE righe_documenti_amministrativi SET id_riferimento = ? WHERE id = ?',
108  array(array( 's' => $idRiga ),array( 's' => $riga['id'] ) ));
109  }} }
110  }
111  else{
112  logWrite( 'non sono presenti righe per la nota pro forma/tutte le righe sono state fatturate', 'task', LOG_ERR );
113  $status['msg'][] = 'non sono presenti righe per la nota pro forma, tutte le righe sono state fatturate';
114  $delete = mysqlQuery($cf['mysql']['connection'], 'DELETE FROM documenti_amministrativi WHERE id = ?', array(array( 's' => $idFattura )) );
115  unset($idFattura);
116  }
117  if(isset($idFattura)){
118  //duplicazione scadenze
119  $scadenze = mysqlQuery( $cf['mysql']['connection'],
120  'SELECT * FROM scadenze WHERE id_documento = ?',
121  array(array( 's' => $nota['id'] )));
122 
123  if(isset($scadenze)){
124  foreach ($scadenze as $scadenza ){
125  $idRiga = mysqlQuery($cf['mysql']['connection'],
126  'INSERT INTO scadenze ( id_documento, id_modalita_pagamento, nome, data, importo_lordo_totale, se_pagato, id_pratica ) VALUES ( ?, ?, ?, ?, ?, ?, ? )',
127  array(
128  array( 's' => $idFattura),
129  array( 's' => $scadenza['id_modalita_pagamento']),
130  array( 's' => $scadenza['nome']),
131  array( 's' => $scadenza['data']),
132  array( 's' => $scadenza['importo_lordo_totale']),
133  array( 's' => $scadenza['se_pagato']),
134  array( 's' => $scadenza['id_pratica'])
135  ));
136  }
137  }
138  }
139  }
140  else{//la fattura non è stata inserita
141  $status['msg'][] = 'impossibile inserire la fattura';
142  logWrite( 'impossibile inserire la fattura', 'task', LOG_DEBUG );}
143  }
144  else
145  {
146  $status['msg'][] = 'nota pro forma non trovata';
147  //l'id non identifica una nota pro forma
148  logWrite( 'id non appartenente a fattura', 'task', LOG_DEBUG );}
149  } else {
150 
151  buildJson( $status );
152 
153  }
154 
155 ?>
mysqlSelectRow( $c, $q, $p=false, &$e=array())
logWrite( $m, $f='site', $l=LOG_NOTICE, $d=DIRECTORY_LOG, $t=CURRENT_LOG_LEVEL, $s=SITE_STATUS)
scrive un messaggio nei log del sito
Definition: _log.utils.php:48
mysqlQuery( $c, $q, $p=false, &$e=array())
$cf['ricerca']['template']
Definition: _030.common.php:7
mysqlSelectValue( $c, $q, $p=false, &$e=array())
buildJson( $content, $encoding=ENCODING_UTF8, $headers=array())
$status
$_REQUEST['__view__'][ $ct['view']['id']]['__restrict__']['id_progetto']['EQ']