{"id":29998,"date":"2023-03-14T10:03:01","date_gmt":"2023-03-14T09:03:01","guid":{"rendered":"https:\/\/help.qualiware.it\/qw-help\/?p=29998"},"modified":"2023-03-14T10:03:01","modified_gmt":"2023-03-14T09:03:01","slug":"action-link-per-laggiunta-di-clienti-in-anagrafica","status":"publish","type":"post","link":"https:\/\/help.qualiware.it\/qw-help\/action-link-per-laggiunta-di-clienti-in-anagrafica\/","title":{"rendered":"Action link per l&#8217;aggiunta di clienti in anagrafica"},"content":{"rendered":"<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\">' Action link per l'aggiunta di clienti in anagrafica\r\n' Lo snippet segue questo modello di JSON di esempio\r\n'\r\n'{\r\n'  \"Token\": \"ec161f8b-ba19-4dac-aab0-2ee16ab94391\",\r\n'  \"Clienti\": [\r\n'\t{\r\n'\t  \"TipoCliente\": \"Ditta\",\r\n'\t  \"ID\": 1,\r\n'\t  \"RagioneSociale\": \"LEMMA WINE COMPANY\",\r\n'\t  \"Indirizzo\": \"120 SE MARKET STREET\",\r\n'\t  \"Cap\": \"97214\",\r\n'\t  \"Citta\": \"PORTLAND\",\r\n'\t  \"Provincia\": \"OR\",\r\n'\t  \"Stato\": {\r\n'\t\t\"ID\": \"234\",\r\n'\t\t\"Descrizione\": \"Stati Uniti\",\r\n'\t\t\"ISO2\": \"US\",\r\n'\t\t\"MembroUE\": false\r\n'\t  },\r\n'\t  \"PartIVA\": \"\",\r\n'\t  \"CodFisc\": \"\",\r\n'\t  \"Agente\": {\r\n'\t\t\"ID\": \"GDV_KN\",\r\n'\t\t\"RagioneSociale\": \"KEVIN NATOLI\",\r\n'\t\t\"Citta\": \"\"\r\n'\t  },\r\n'\t  \"Pagamento\": {\r\n'\t\t\"ID\": \"BO90\",\r\n'\t\t\"Descrizione\": \"BB 90GG DF\"\r\n'\t  },\r\n'\t  \"Email\": \"\",\r\n'\t  \"Telefono\": \"\"\r\n'\t}\r\n'  ]\r\n'}\r\n\r\n\r\nDim nomeActionLink As String = \"Action Link CLIENTI-FORNITORI\"\r\n\r\nDim OK As Boolean = True\r\nDim esito As String = \"\"\r\nDim erroreRequest As String = \"\"\r\nDim errcode As Integer\r\nDim jsonr As String\r\nDim res As New Newtonsoft.Json.Linq.JObject\r\n\r\n\r\nTry\r\n  'OTTENGO LA RICHIESTA IN JSON\r\n  Page.Request.InputStream.Seek(0, System.IO.SeekOrigin.Begin)\r\n\r\n  Using ReceiveStream As System.IO.Stream = Page.Request.InputStream\r\n    Using ReadStream As System.IO.StreamReader = New System.IO.StreamReader(ReceiveStream, System.Text.Encoding.UTF8)\r\n      jsonr = ReadStream.ReadToEnd()\r\n    End Using\r\n  End Using\r\n\r\n  Dim objtmp As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(jsonr)\r\n\r\n  Dim token As String = CType(objtmp(\"Token\"), Newtonsoft.Json.Linq.JValue).Value\r\n\r\n  Dim tokenIsValid As Boolean = qwlib.WebUtils.CheckToken2(token)\r\n\r\n  If tokenIsValid Then\r\n    ' copia il json in una directory locale\r\n    Dim path As String = \"C:\\dati\\Json\\Clienti_Fornitori.json\"\r\n\r\n    Dim writer As New System.IO.StreamWriter(path)\r\n\r\n    writer.WriteLine(\"\" &amp; jsonr)\r\n    writer.Close()\r\n\r\n    '--------------------------------------------------------------------------------------------------'\r\n    Dim parsedJson As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(jsonr)\r\n\r\n    Dim clifor As New QWTable  ' tabella anagrafica clienti\/fornitori\r\n    Dim orgcf As New QWTable   ' tabella organigramma clienti\/fornitori\r\n    Dim temp As New QWTable    ' vista temporanea\r\n\r\n    clifor.DataBase = DB\r\n    orgcf.DataBase = DB\r\n    temp.DataBase = DB\r\n\r\n    '------------------------------ CLIENTI------------------------------------------\r\n    ' questo esempio legge solo l'elenco dei clienti dal json\r\n    ' per i fornitori il procedimento \u00e8 uguale ma il CODICE dovr\u00e0 iniziare per \"F\" e dovr\u00e0 essere spuntato il flag FORNITORE invece che quello CLIENTE\r\n\r\n    If Not parsedJson.SelectToken(\"Clienti\") Is Nothing Then\r\n      Dim erroreSalvataggio As String\r\n      Dim CODICE As String\r\n\r\n      Dim lunghezzaCodiceAnagrafica As Integer = 6 ' volendo si pu\u00f2 scegliere un altro numero: l'importante \u00e8 che non sia maggiore di 6\r\n\r\n      For i As Integer = 0 To parsedJson.SelectToken(\"Clienti\").Count - 1\r\n        erroreSalvataggio = \"\"\r\n\r\n        ' la funzione SqlStr fa l'escaping dei caratteri riservati di SQL\r\n        CODICE = SqlStr(\"C\" &amp; Right(\"00000\" &amp; parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].ID\").ToString, lunghezzaCodiceAnagrafica))\r\n\r\n        clifor.SQL = \"select * \"\r\n        clifor.SQL += \"from CLIFOR \"\r\n        clifor.SQL += \"where CODICE = \" &amp; Chr(39) &amp; CODICE &amp; Chr(39)\r\n        clifor.Active = True\r\n\r\n        'SE NON ESISTE UN RECORD CON QUEL CODICE CLIENTE, NE CREO UNO NUOVO\r\n        If Not clifor.RowSet.First() Then\r\n          clifor.BeginAppend()\r\n\r\n          clifor.Replace(\"CODICE\", CODICE)\r\n          clifor.Replace(\"CLIENTE\", True)\r\n        End If\r\n\r\n        'SALVO LE INFORMAZIONI DEL JSON NELLE VARIE COLONNE DI CLIFOR\r\n        clifor.Replace(\"RAGSOC\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].RagioneSociale\").ToString))\r\n        clifor.Replace(\"VIA\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Indirizzo\").ToString))\r\n        clifor.Replace(\"CAP\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Cap\").ToString))\r\n        clifor.Replace(\"CITTA\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Citta\").ToString))\r\n        clifor.Replace(\"PROV\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Provincia\").ToString))\r\n\r\n        If Not parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Stato\") Is Nothing Then\r\n          clifor.Replace(\"NAZIONE\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Stato.Descrizione\").ToString))\r\n        End If\r\n\r\n        clifor.Replace(\"PIVA\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].PartIVA\").ToString))\r\n        clifor.Replace(\"CODFISC\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].CodFisc\").ToString))\r\n        clifor.Replace(\"PAGAMENTO\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Pagamento.Descrizione\").ToString))\r\n        clifor.Replace(\"EMAIL\", SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Email\").ToString))\r\n        clifor.Replace(\"TELEFONO\", SqlStr((parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Telefono\").ToString).Replace(\" \", \"\")))\r\n\r\n        If Not clifor.SaveRecord(erroreSalvataggio) Then\r\n          OK = False\r\n          esito &amp;= erroreSalvataggio &amp; vbCrLf\r\n          WriteLog(nomeActionLink &amp; vbCrLf &amp; erroreSalvataggio)\r\n        End If\r\n\r\n        clifor.Active = False\r\n\r\n        'SALVO LE INFORMAZIONI extra DEL JSON NELLE VARIE COLONNE DI ORGCF\r\n        If Not parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Agente\") Is Nothing Then\r\n          orgcf.SQL = \"select * \"\r\n          orgcf.SQL += \"from ORGCF \"\r\n          orgcf.SQL += \"where CODICE = \" &amp; Chr(39) &amp; CODICE &amp; Chr(39)\r\n          orgcf.Active = True\r\n\r\n          If Not orgcf.RowSet.First() Then\r\n            orgcf.BeginAppend()\r\n\r\n            orgcf.Replace(\"CODICE\", CODICE)\r\n          End If\r\n\r\n          Dim NOME_AGENTE As String = SqlStr(parsedJson.SelectToken(\"Clienti[\" &amp; i &amp; \"].Agente.RagioneSociale\").ToString)\r\n\r\n          temp.SQL += \"select case \"\r\n          temp.SQL += \"when (select count(*) from ORGCF where CODICE = \" &amp; Chr(39) &amp; CODICE &amp; Chr(39)\r\n          temp.SQL += \" and DESCPER = \" &amp; Chr(39) &amp; NOME_AGENTE &amp; Chr(39) &amp; \") &gt; 0 then isnull(max(CODORG), 0) \"\r\n          temp.SQL += \"else -1 \"\r\n          temp.SQL += \"end\"\r\n          temp.SQL += \"from ORGCF \"\r\n          temp.Active = True\r\n\r\n          If temp.RowSet.Fields(1).Value = -1 Then\r\n            orgcf.Replace(\"CODORG\", 1)\r\n          Else\r\n            orgcf.Replace(\"CODORG\", temp.RowSet.Fields(1).Value)\r\n          End If\r\n\r\n          temp.Active = False\r\n\r\n          orgcf.Replace(\"DESCPER\", NOME_AGENTE)\r\n          orgcf.Replace(\"DESCRUO\", \"AGENTE\")\r\n\r\n          If Not orgcf.SaveRecord(erroreSalvataggio) Then\r\n            OK = False\r\n            esito += erroreSalvataggio &amp; vbCrLf\r\n            WriteLog(nomeActionLink &amp; vbCrLf &amp; erroreSalvataggio)\r\n          End If\r\n\r\n          orgcf.Active = False\r\n        End If\r\n      Next\r\n    Else\r\n      esito += \"Non ci sono Clienti !\" &amp; vbCrLf\r\n      WriteLog(nomeActionLink &amp; vbCrLf &amp; esito)\r\n    End If\r\n\r\n    orgcf.Dispose()\r\n    temp.Dispose()\r\n  Else\r\n    errcode = 1\r\n    esito += \"Token non valido !\" &amp; vbCrLf\r\n  End If\r\n\r\n  If Not String.IsNullOrEmpty(esito) Then\r\n    OK = False\r\n  End If\r\nCatch e As Exception\r\n  OK = False\r\n  errcode = -1\r\n  erroreRequest = e.Message &amp; vbCrLf &amp; e.StackTrace\r\n  WriteLog(nomeActionLink &amp; vbCrLf &amp; erroreRequest)\r\nEnd Try\r\n\r\nDim ret_obj = New With {.ResultCode = errcode, .Result = IIf(OK, \"OK\", \"KO\"), .ErrResult = esito &amp; vbCrLf &amp; vbCrLf &amp; erroreRequest}\r\n\r\nReturn Newtonsoft.Json.JsonConvert.SerializeObject(ret_obj)<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8216; Action link per l&#8217;aggiunta di clienti in anagrafica &#8216; Lo snippet segue questo modello di JSON di esempio &#8216; &#8216;{ &#8216; &#8220;Token&#8221;: &#8220;ec161f8b-ba19-4dac-aab0-2ee16ab94391&#8221;, &#8216; &#8220;Clienti&#8221;: [ &#8216; { &#8216; &#8220;TipoCliente&#8221;: &#8220;Ditta&#8221;, &#8216; &#8220;ID&#8221;: 1, &#8216; &#8220;RagioneSociale&#8221;: &#8220;LEMMA WINE COMPANY&#8221;, &#8216; &#8220;Indirizzo&#8221;: &#8220;120 SE MARKET STREET&#8221;, &#8216; &#8220;Cap&#8221;: &#8220;97214&#8221;, &#8216; &#8220;Citta&#8221;: &#8220;PORTLAND&#8221;, &#8216; &#8220;Provincia&#8221;: &#8220;OR&#8221;,&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[65],"tags":[263],"acf":[],"_links":{"self":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/29998"}],"collection":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/comments?post=29998"}],"version-history":[{"count":1,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/29998\/revisions"}],"predecessor-version":[{"id":29999,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/29998\/revisions\/29999"}],"wp:attachment":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/media?parent=29998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/categories?post=29998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/tags?post=29998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}