import type { PropType } from 'vue'; import { computed, defineComponent, onMounted, ref, watch } from 'vue'; import { useUserStore } from '@store/UserStore'; import { useCircuitStore } from '@store/CircuitStore'; import type { ICircuit, IMyCircuit, IMyGroup } from 'model'; import { IImgGallery, IUserFields, IUserProfile, IFriends, IAccount } from 'model'; import { costanti } from '@costanti'; import { shared_consts } from '@src/common/shared_vuejs'; import { tools } from '@tools'; import { useQuasar } from 'quasar'; import { useI18n } from 'vue-i18n'; import { useRoute, useRouter } from 'vue-router'; import { CUserNonVerif } from '@src/components/CUserNonVerif'; import { CSaldo } from '@src/components/CSaldo'; import { CTitleBanner } from '@src/components/CTitleBanner'; import { toolsext } from '@store/Modules/toolsext'; import { useGlobalStore } from '@store/globalStore'; import { userPanel } from 'app/src/rootgen/admin/userPanel'; export default defineComponent({ name: 'CMyCircuit', emits: ['setCmd'], components: { CUserNonVerif, CSaldo, CTitleBanner }, props: { mycircuit: { type: Object as PropType, required: false, default: null, }, circuitname: { type: String, required: false, default: null, }, prop_groupnameSel: { type: Object as PropType, required: false, default: null, }, visu: { type: Number, required: true, }, noaut: { type: Boolean, required: false, default: false, }, username: { type: String, required: false, default: '', }, myuser: { type: Object as PropType, required: false, default: null, }, }, setup(props, { emit }) { const userStore = useUserStore(); const circuitStore = useCircuitStore(); const $q = useQuasar(); const { t } = useI18n(); const $router = useRouter(); const $route = useRoute(); const globalStore = useGlobalStore(); const circuit = ref(null); const account = computed(() => { if (groupnameSel.value) { return userStore.getAccountGroupByCircuitId(circuit.value._id, groupnameSel.value); } else { return circuit.value ? userStore.getAccountByCircuitId(circuit.value._id) : null; } }); const qtarem = computed(() => account.value ? circuitStore.getRemainingCoinsToSend(account.value) : 0 ); const saldo_pend = computed(() => (account.value ? account.value.saldo_pend : 0)); const saldo = computed(() => (account.value ? account.value.saldo : 0)); const fidoConcessoUtente = computed(() => circuitStore.getFidoConcessoByUsername( props.myuser, circuit.value._id, groupnameSel.value ? '' : props.username, groupnameSel.value ? groupnameSel.value.groupname : '' ) ); const table = ref(shared_consts.TABLES_CIRCUITS); const showingtooltip = ref(false); const showrules = ref(false); const requestToEnterCircuit = ref(false); const groupnameSel = ref(null); watch( () => props.mycircuit, (newval, oldval) => { mounted(); } ); function getNameCircuit() { if (circuit.value) { if (tools.existProp(circuit.value, 'name')) { return tools.getProp(circuit.value, 'name'); } else if (tools.existProp(circuit.value, 'circuitname')) { return tools.getProp(circuit.value, 'circuitname'); } } return ''; } function mounted() { groupnameSel.value = props.prop_groupnameSel; if (!props.mycircuit) { if (props.circuitname) { circuit.value = null; } } else { if (props.mycircuit) { circuit.value = props.mycircuit; } } if (circuit.value) { const rectofind = circuitStore.listcircuits.find( (circ: ICircuit) => circ.name === getNameCircuit() ); if (rectofind) { // console.log('rectofind', rectofind) circuit.value = rectofind; } } } function getImgCircuit(circuit: ICircuit) { return userStore.getImgByCircuit(circuit); } function naviga(path: string) { $router.push(path); } function setCmd(cmd: number, myusername: string, value: any = '') { emit('setCmd', cmd, myusername, value); } function myusername() { return userStore.my.username; } function getRegulation(reg: string) { let name = 'Provinciale'; if (!reg) { name = getNameCircuit(); } // Trasforma il vecchio HTML in uno moderno return transformRegulationHTML(name); } function transformRegulationHTML(circuitName: string): string { return `

${circuitName}

Costituzione e scopo Comunitario

La Comunità Territoriale "RIS ${circuitName}" spontanea (da ora "la Comunità") costituisce un circuito di scambio tra i partecipanti, ciascuno dei quali dovrà indicare i beni e servizi che offre alla Comunità stessa in RIS. Il circuito funziona come dettagliato qui di seguito.

Circuito di scambio

La Comunità ha avviato un sistema di scambio di beni e servizi tra utenti, in cui il valore delle transazioni si misura utilizzando una unità di conto denominata RIS, convenzionalmente considerata pari a 1 euro.

Gli scambi tra utenti avvengono liberamente, dopo aver concordato il valore tra le parti.

Tutti gli utenti partecipanti al circuito iniziano con un conto vuoto, cioè pari a 0 RIS.

L'utente pagante che ha un conto RIS vuoto o con quantità non sufficiente a perfezionare lo scambio può utilizzare la Fiducia Concessa andando in debito fino al limite massimo a lui permesso, denominato "fiducia concessa". Un equivalente valore in RIS a credito sarà conseguentemente iscritto sul conto del ricevente.

In ogni momento nel circuito la somma di tutte le esposizioni in positivo saranno perfettamente bilanciate dalla somma di tutte le esposizioni in negativo, dimostrando così che ciascun detentore di un saldo positivo abbia garantita la solvibilità del proprio credito. Ciascun detentore di un saldo negativo concorda che la sua esposizione funge da garanzia della quantità di RIS equivalenti circolanti nel circuito e che può essere chiamato a regolarizzare con equivalente pagamento in euro *, entro un lasso di tempo ragionevolmente adeguato, nel caso in cui:

  • la Comunità, in accordo con il Gruppo Tecnico, deliberi il rientro di alcune posizioni con decisione motivata;
  • l'utente decida di uscire per motivi personali;
  • il circuito chiuda, per decisione deliberata o per motivi di forza maggiore.
* Nota importante: La regolarizzazione può avvenire con equivalente valore in beni e servizi, oppure, in ultima istanza, con pagamento in euro.

Il Gruppo Tecnico

La Comunità costituisce il Gruppo Tecnico di Gestione degli Scambi (da ora "Gruppo Tecnico"), partecipante esso stesso agli scambi tramite uno o più delegati autorizzati. Il Gruppo Tecnico è l'organo che supporta la comunità nella gestione degli scambi e quant'altro sia necessario all'ottimale svolgimento dello scopo comunitario.

In particolare ha il compito di:

  • approvare le richieste di adesione, dopo aver verificato che il richiedente faccia parte della Comunità;
  • tenere aggiornato l'elenco dei partecipanti al circuito;
  • stabilire la soglia di massimo scoperto e massimo attivo, collettivo e individuale;
  • valutare la sostenibilità di eventuali stanziamenti di finanziamenti;
  • introdurre tassazioni sulle transazioni o una tantum;
  • adottare o meno il Deperimento dei conti inoperosi (riferimento sistema Si.Cre.Na.C.C.) e modularne i parametri di applicazione;
  • deliberare la chiusura del circuito;
  • deliberare la destinazione delle riserve comunitarie depositate sui Conti della Comunità per: finanziare opere varie; corrispondere salari o agire con interventi di sussistenza a partecipanti in stato di necessità; rilevare lo stato debitorio all'interno del circuito di utenti in difficoltà economica, irreperibili o venuti a mancare; attuare interventi ritenuti utili, necessari o meritevoli;
  • redigere, emendare ed adeguare alle eventuali necessità il presente Regolamento.

Il Gruppo Tecnico è formato da candidati scelti dalla Comunità sulla base delle competenze e dovrà sottoporre all'approvazione della Comunità stessa resoconti periodici delle sue attività.

Sistemi di contabilizzazione

I conti RIS e le transazioni conseguenti agli scambi sono registrati attraverso la piattaforma riso.app, dove i partecipanti comunicano i beni e servizi proposti alla Comunità. Tutti i partecipanti possono visualizzare in ogni momento la situazione del circuito.

La Comunità, in accordo con il Gruppo Tecnico, può decidere di utilizzare altri strumenti di contabilizzazione, che dovranno, in ogni caso, permettere l'inserimento delle singole transazioni effettuate tra gli utenti e la visualizzazione da parte di ogni partecipante. Saranno dunque inseriti nel nuovo strumento tutti gli utenti partecipanti con l'ultimo saldo rilevato al momento della transizione.

Conto Comunitario

La Comunità può decidere di aprire uno o più Conti all'interno del circuito, che saranno gestiti dal Gruppo Tecnico, allo scopo di interagire con i conti degli altri utenti e quindi recepire eventuali proventi da tassazioni o finanziare iniziative autorizzate. I Conti Comunitari sono i conti della Comunità.

Un conto a credito rappresenta una riserva monetaria da re-immettere nel circuito per finanziare opere o attività di beneficio comune; un conto a debito rappresenta il "debito pubblico" della Comunità.

I conti comunitari sono sottoposti alle stesse regole degli altri conti (conto vuoto, possibilità di scoperto di conto, ecc.). Ogni operazione straordinaria viene deliberata appositamente, mentre l'ordinaria amministrazione può essere autorizzata in via continuativa.

Riferimenti

Per una migliore comprensione dei meccanismi che sottostanno allo scambio nel qui presentato circuito, si rimanda alla lettura del testo disponibile gratuitamente su https://sicrenacc.info, da cui è stata tratta libera ispirazione e condivisione dei principi generali del Sistema di Credito Naturale.

`; } onMounted(mounted); return { circuit, getRegulation, costanti, getImgCircuit, naviga, setCmd, shared_consts, userStore, tools, table, myusername, circuitStore, t, account, qtarem, saldo, saldo_pend, globalStore, showingtooltip, showrules, requestToEnterCircuit, groupnameSel, fidoConcessoUtente, }; }, });