@@ -598,7 +598,7 @@ public function save(array $options = [])
598598 // Operazioni al cambiamento di stato
599599 // Bozza o Annullato -> Stato diverso da Bozza o Annullato
600600 if (
601- (in_array ($ id_stato_precedente , [$ id_stato_bozza , $ id_stato_annullata ])
601+ (in_array ($ id_stato_precedente , [$ id_stato_bozza , $ id_stato_annullata, $ id_stato_non_valida ])
602602 && !in_array ($ id_stato_attuale , [$ id_stato_bozza , $ id_stato_annullata , $ id_stato_non_valida ]))
603603 || $ options [0 ] == 'forza_emissione '
604604 ) {
@@ -851,77 +851,6 @@ public function getBanca()
851851 }
852852
853853 // Metodi statici
854-
855- /**
856- * Determina la banca dell'azienda da utilizzare per il documento.
857- *
858- * @param Anagrafica $azienda
859- * @param int $id_pagamento
860- * @param string $conto
861- * @param string $direzione
862- * @param Anagrafica $anagrafica_controparte
863- * @return int|null
864- */
865- private static function getBancaAzienda (Anagrafica $ azienda , int $ id_pagamento , string $ conto , string $ direzione , Anagrafica $ anagrafica_controparte ): ?int
866- {
867- $ database = database ();
868-
869- // Per le fatture di vendita, priorità alla banca dell'azienda
870- // Per le fatture di acquisto, priorità alla banca del fornitore
871- $ anagrafica_principale = ($ direzione == 'entrata ' ) ? $ azienda : $ anagrafica_controparte ;
872-
873- // 1. Banca predefinita dell'anagrafica principale per il tipo di operazione
874- $ id_banca = $ anagrafica_principale ->{"idbanca_ {$ conto }" };
875-
876- // 2. Banca dell'azienda con conto corrispondente al tipo di pagamento (predefinita)
877- if (empty ($ id_banca )) {
878- $ id_banca = self ::getBancaByPagamento ($ database , $ azienda ->id , $ id_pagamento , $ conto , true );
879- }
880-
881- // 3. Banca dell'azienda con conto corrispondente al tipo di pagamento (qualsiasi)
882- if (empty ($ id_banca )) {
883- $ id_banca = self ::getBancaByPagamento ($ database , $ azienda ->id , $ id_pagamento , $ conto , false );
884- }
885-
886- // 4. Fallback: banca predefinita dell'azienda
887- if (empty ($ id_banca )) {
888- $ banca_predefinita = Banca::where ('id_anagrafica ' , $ azienda ->id )
889- ->where ('predefined ' , 1 )
890- ->first ();
891- $ id_banca = $ banca_predefinita ?->id;
892- }
893-
894- return $ id_banca ;
895- }
896-
897- /**
898- * Cerca una banca dell'azienda associata al tipo di pagamento.
899- *
900- * @param object $database
901- * @param int $id_anagrafica
902- * @param int $id_pagamento
903- * @param string $conto
904- * @param bool $solo_predefinita
905- * @return int|null
906- */
907- private static function getBancaByPagamento ($ database , int $ id_anagrafica , int $ id_pagamento , string $ conto , bool $ solo_predefinita ): ?int
908- {
909- $ where_predefined = $ solo_predefinita ? 'AND `predefined`=1 ' : '' ;
910-
911- $ query = "SELECT `id` FROM `co_banche`
912- WHERE `deleted_at` IS NULL
913- {$ where_predefined }
914- AND `id_pianodeiconti3` = (SELECT idconto_ {$ conto } FROM `co_pagamenti` WHERE `id` = :id_pagamento)
915- AND `id_anagrafica` = :id_anagrafica " ;
916-
917- $ result = $ database ->fetchOne ($ query , [
918- ':id_pagamento ' => $ id_pagamento ,
919- ':id_anagrafica ' => $ id_anagrafica ,
920- ]);
921-
922- return $ result ['id ' ] ?? null ;
923- }
924-
925854 /**
926855 * Calcola il nuovo numero di fattura.
927856 *
@@ -1045,6 +974,13 @@ public function getTotaleCSVAttribute()
1045974
1046975 /**
1047976 * Determina la banca dell'azienda da utilizzare per il documento.
977+ *
978+ * @param Anagrafica $azienda
979+ * @param int $id_pagamento
980+ * @param string $conto
981+ * @param string $direzione
982+ * @param Anagrafica $anagrafica_controparte
983+ * @return int|null
1048984 */
1049985 private static function getBancaAzienda (Anagrafica $ azienda , int $ id_pagamento , string $ conto , string $ direzione , Anagrafica $ anagrafica_controparte ): ?int
1050986 {
0 commit comments