Posted on Lascia un commento

Contro i Cryptovirus

Il cryptovirus o ransomware (ransom = riscatto) può arrivare nei nostri computer. Poco importa quanto siamo formati nel riconoscere email sospette. Qualche volta siamo stanchi, distratti ed il nostro livello di attenzione si abbassa. “Loro” sono sempre più furbi e bravi nel farci sbagliare. Apriamo degli allegati che non dovremmo aprire. A questo punto il danno è fatto. Il virus crypta un file alla volta molto velocemente : abbiamo stimato che riesce a criptare 10.000 file in 30 minuti. Dopo aver criptato i file del vostro computer, comincia a criptare i file di tutte le cartelle di rete in cui riesce ad entrare: i server o i computer dei vostri colleghi. I danni possono essere incalcolabili. Secondo la nostra esperienza non esiste antivirus che possa contrastarlo. Quando il virus comincia a cryptare i vostri file non vi accorgete di niente sino a che non è troppo tardi, quando tutto è finito : il virus si manifesta cambiando l’immagine del vostro desktop con un messaggio : “Tutti i vostri file sono cryptati. Se volete riaverli dovete pagare un riscatto”.

Se ci fossimo accorti dell’infezione una volta che questa è partita avremmo sicuramente perso qualcosa ma avremmo potuto limitare i danni.

Partendo da queste considerazioni abbiamo creato un programma molto semplice che controlla il contenuto delle vostre cartelle personali e vi avverte tramite email se il virus ne sta modificando il contenuto. L’ alert può essere inviato solo a voi o contemporaneamente ad altri indirizzi email. Una volta ricevuto il messaggio, spegnete a caldo il computer spingendo il pulsante di accensione : meglio rischiare di rompere l’alimentatore che con pochi euro può essere sostituito piuttosto che perdere tutti i vostri file.

Il programma è completamente gratuito è potete scaricarlo qui : MECDATA DAWN OF JUSTICE. La nostra risposta ai CryptoVirus.

Una volta installato, lanciatelo. Il programma vi chiederà, la configurazione. L’unica cosa che dovete inserire è la lista degli indirizzi email che dovrete allertare in caso di infezione.

A questo punto il programma parte e potete vedere l’icona sulla barra delle applicazioni in basso. Tramite questa icona potete entrare di nuovo nella configurazione per aggiungere o modificare gli indirizzi email.

Per gli amanti delle prestazioni, Il programma occupa 18 Mb di RAM in esecuzione e non impatta sul processore. Non funziona su Windows Xp.

Francamente vi auguriamo che non vi sia utile, ma se lo fosse, negli ultimi test il programma ha rilevato l’infezione solo 2 minuti dopo l’inizio della stessa.

Vi suggeriamo di installarlo. Non risolve, ma migliora.


I nostri ulteriori consigli

  • Non aprire gli allegati da email da sconosciuti, sopratutto se non sono mail che ti aspetti
  • Non disabilitare il blocco di macro di prodotti come Microsoft Word o Excel
  • Fare il backup dei file regolarmente
  • Fare il backup in cloud
  • Non creare condivisioni di file e cartelle con permessi per ‘Everyone’
  • Condividere le cartelle solo agli utenti o gruppi strettamente necessari

 

Posted on Lascia un commento

MEKERP: ANNO NUOVO

Sono poche le operazioni che devono essere effettuate sul Mekerp quando ci apprestiamo a cominciare un nuovo anno.

Ricordate che i numeratori di Preventivi Clienti, Ordini Clienti, Richieste di offerta fornitori, ordini di acquisto, ordini di lavorazione, automaticamente ripartiranno da 1. Non dovete fare niente.


NUMERATORI DOCUMENTI FISCALI

I numeratori dei documenti fiscali devono essere aggiornati, almeno prima di fare un ddt od una fattura con data nell’anno nuovo.

Potete farlo oggi stesso, la bollettazione e la fatturazione di dicembre non subiranno variazioni.

Aprite il Mekerp ed andate in Tabelle – Numeratori

Se nella schermata Vedete in alto a destra il nuovo anno, significa che dovete creare i numeratori. (nb. la foto qui sotto è solo indicativa)

Spingete il tasto evidenziato con la freccia.

Il risultato sarà una nuova lista di righe di numeratori in basso con il nuovo anno. Ci sarà una nuova riga per ogni riga già presente nell’anno precedente. Per tutte, chiaramente, l’ultimo numero sarà impostato a 0.

Se invece non vi compare a destra il nuovo anno ma un anno successivo, può significare  2 cose :

  1. Negli anni passati avete spinto il pulsante di creazione nuovo anno più volte e vi siete ….. proiettati nel futuro.
  2. Avete per errore fatto un documento di trasporto nel prossimo anno o avete fatto una registrazione in Contabilità di un documento con data di emissione nell’anno prossimo.

In questa situazione dovete controllare solo una cosa. Se il numero delle righe di numeratori del nuovo anno è paragonabile a quello dell’anno in corso, allora tutto bene . Se vi trovate invece una sola riga nel nuovo anno, avete bisogno del supporto tecnico; dovremo intervenire noi per ripristinare il database.


REGISTRI IVA

Dovete anche creare il nuovo anno per i registri IVA. Il programma è del tutto simile al precedente.


Torna all’indice.

Posted on Lascia un commento

MEKERP: AGGIUNTA DI RIGHE AD UN DOCUMENTO DI USCITA DA ORDINE

AGGIUNTA DI RIGHE CON EVASIONE DI ORDINE CLIENTE

Dato un documento creato o stampato come posso aggiungere delle righe in modo che sia correttamente evasa anche la riga di ordine cliente ?

Questa funzionalità non è impostata a default ma va selezionata, una tantum dall’azienda operando sulla chiave di ambiente “ADDRIGADDT”. (v.istruzioni)

Nei programmi di evasione ordini clienti , una volta accantonate le righe, compare un nuovo pulsante “SELEZIONA DDT ESISTENTE”.

Spingendo questo pulsante andrete a selezionare uno specifico documento di trasporto non fatturato.

Una volta selezionato il documento di trasporto, spingendo il pulsante “AGGIUNGI A DDT ESISTENTE” , la riga di ordine cliente sarà aggiunta al documento. Se il documento di trasporto era già stato stampato, l’operazione porterà anche alla chiusura della riga di ordine e alla generazione dei movimenti relativi.

Torna all’indice.

Posted on Lascia un commento

MEKERP: EVASIONE (CHIUSURA) ORDINI CLIENTI CON CONSEGNA

Con “Evasione” di un ordine cliente, intendiamo la chiusura parziale o completa di una o più righe di uno ordine cliente. Nella pratica “consegniamo al cliente la merce che ci ha ordinato”.

Apriamo il programma degli Ordini Clienti e selezioniamo la tab “Evasione”.

A questo punto dobbiamo dire al programma quanti dei prodotti ordinati dobbiamo consegnare, cioè la quantità in uscita. Le colonne con al quantità sono le 2 colonne in verde al centro dello schermo. Vi basta scrivere su una delle 2 e la seconda colonna viene compilata in automatico.

note : Perché 2 colonne per la quantità in uscita ? Perché una indica L'unità di misura usata nell'ordine, l'altra l'unità di misura che usate nel vostro magazzino. Le 2 cose potrebbero essere diverse : per esempio se gestite del materiale in chili, ma lo vendete in metri.

Se nel vostro ordine sono presenti decine di righe, la compilazione manuale di tutte le quantità in uscita (la colonna verde), porta via del tempo. Vi viene in soccorso il programma. Spingendo il pulsante sulla sinistra, le quantità “in consegna” si riempiono in automatico con le quantità residue.

note: abbiamo parlato di quantità "residua". Questo è un primo indice del fatto che il programma permette evasioni / consegne parziali sulla stessa riga.

Una volta che il programma ha fatto un po di lavoro per voi, potete, eventualmente, entrare su ogni singola riga e modificare ulteriormente le quantità in uscita. Qualche esempio :

  • mettete 0. Non consegnate il prodotto
  • mettete in uscita una quantità minore della quantità in ordine. Farete così una evasione parziale. La riga di ordine rimarrà aperta per la quantità residua.
  • mettete in uscita una quantità maggiore della quantità in ordine. Consegnate al cliente più merce di quanta ve ne ha chiesta.

ACCANTONATO

Spingendo il pulsante “Prepara la Merce” la merce che avete selezionata viene “Accantonata”. Visivamente le righe selezionate si sono spostate nella parte bassa della maschera.

Dal punto di vista del processo, il reparto magazzino ha messo su un pallet la merce pronta ad essere spedita. Da qui in poi potremmo generare il documento di spedizione, oppure aspettare altri giorni e attendere di avere altra merce accantonata, cioè preparata per essere spedita.

CONSEGNA

Con la preparazione del materiale si è visualizzato un nuovo pulsante : “Consegna Immediata”. Spingendo questo pulsante, dopo una prima richiesta di conferma, vi viene richiesto se volete stampare il documento o meno. Se rispondete “SI” viene generato il documento di trasporto con relativa assegnazione di numero, altrimenti viene creato un pre-documento, visibile in “Magazzino – Documenti di Uscita”, che potrete eventualmente modificare e successivamente trasformare in documento di trasporto.

EVASIONI MULTIPLE

Quello che abbiamo appena visto è un caso molto semplice : da un ordine cliente genero un documento di trasporto. Ma se dobbiamo consegnare la merce ordinataci con più di un ordine cliente ?

Andiamo nel menu Clienti – Evasione/Consegna.

La maschera che ci appare è molto simile alla precedente ma, non è dedicata ad un solo ordine cliente.

Qui vedete tutte le righe aperte di tutti gli ordini clienti. Per procedere dovete prima selezionare un cliente specifico e spingere il pulsante “Cerca”.

Dopo questa selezione, procedete normalmente, come spiegato precedentemente : come vedete il programma è perfettamnete identico. In questo programma, in alto, potete, oltre al cliente, fare altre selezioni : per esempio potete vedere solo quello che ha finito la produzione, o tutti ciò che doveva essere consegnato in una certa data.

Torna all’indice.

Posted on Lascia un commento

ASP.NET MVC – Il primo Controller

Il Controller di un Model, lo crea Visual Studio. Vediamo come.

Dopo aver creato il Model, Student.cs, nel progetto, in Visual Studio, posizionatevi sulla directory Controllers. Tasto destro del mouse e premete “Add” -> “Controller”. Vi compare una maschera che vi propone di scegliere il tipo di controller che volete creare. Il primo della lista è un controller vuoto, cioè una classe che dovrete costruire in autonomia. Il terzo dovrebbe essere un Controller di tipo “Controller with View, using Entity Framwork“. Visual Studio, partendo dal nostro Model crea per noi il Controller e tutte le view delle operazioni CRUD. Scegliete questo tipo.

Ora compare una maschera molto importante. Partendo dall’alto vi viene chiesto di scegliere :

  • Model Class. C’è un menu a tendina che si è automaticamente riempito con tutte le classi presenti nel Model (e con tutte le classi presenti nel vostro progetto). Scegliete Student.
  • Data context Class. Dovete scegliere la connessione al database che contiene la vostra tabella. Il menu a tendina presenta tutte le classi nel progetto, derivate dalla classe DbContext,
  • Check “Generate Views” e “use a Layout Page“.
  • Controller name. Visual Studio ve ne propone uno in base al Model che avete selezionato. Potete modificare il nome, ma lasciate la parola Controller alla fine. (es. StudentsController)

Prima di crearvi il Controller, Visual Studio controlla che tutto ciò che avete scritto nei modelli e nel dbcontext sia “giusto”. Se l’operazione va a buon fine ora, nella directory Controllers vi trovate il file StudentsController.cs.

Esaminiamo questo file. Vi trovate dentro la classe StudentsController derivata da Controller.

public class StudentsController : Controller
 {
 private ApplicationDbContext db = new ApplicationDbContext();

// GET: Students
 public ActionResult Index()
 {
 return View(db.Students.ToList());
 }

La classe inizializza subito una connessione al database (db).

La prima funzione che vediamo è Index(). E’ stata creata i automatico e ci permetterà di vedere la lista dei nostri Studenti. Ogni funzione di questo tipo viene chiamata “Action”. Quando, nel nostro sito richiediamo la lista degli Studenti, lanciamo la funzione index del controller Students secondo questo percorso :

http://www.mysite.com/Students/Index

La funzione Index, richiede alla connessione al database, tutti gli studenti (db.Students) e li trasforma in un lista (db.Students.ToList()). A questo punto manda la nostra lista degli studenti alla view (return View(db.Students.ToList());) Come vedete non è presente il nome della view ma solo un generico View. Il Controller va a cercare nella lista delle view quella che si chiama esattamente come la funzione (Index) e … noi vediamo gli studenti.

Nel progetto spostatevi nella directory Views. Qui troverete una cartella Student con una lista di file creati in automatico (analizzeremo le view prossimamente). Nella directory Views trovate la directory Shared. Possiamo dire che questa directory contiene tutti i  “Controlli Utente” cioè tutti i pezzi di interfaccia che intendiamo utilizzare in più pagine; contiene tutte le view che vengono utilizzate da altre view. Anche quella che nel passato chiamavamo “master page” si trova qui, sotto forma di “layout”. Cercate il file _Layout.cshtml.  Questa è la grafica del vostro sito (la analizzeremo dettagliatamente, prossimamente). Cercate questo pezzo di codice :

<ul class="nav navbar-nav">
 <li>@Html.ActionLink("Home", "Index", "Home")</li>
 <li>@Html.ActionLink("About", "About", "Home")</li>
 <li>@Html.ActionLink("Contact", "Contact", "Home")</li>

Questi sono i pulsanti che vedete in alto, quando lanciate il sito. Dobbiamo inseriren un nuovo pulsante per richiamare la pagina degli studenti.

Aggiungete a questa lista html :

<li>@Html.ActionLink("My Student", "Index", "Students")</li>

Analizziamo quindi il componente ActionLink.

ActionLink(“Testo Visualizzato”, “Nome della Action, “Nome del Controller”). Avremo quindi un pulsante che una volta spinto ci porterà alla pagina http://www.mysite.com/Students/Index.

Provate a lanciare l’applicazione ed ad effettuare un login per testare che tutto funzioni.

Posted on Lascia un commento

MEKERP: SCONTO FORNITORE

Nel Mekerp la fatturazione di un fornitore da cui abbiamo acquistato del materiale secondo i flussi documentali (ordini di acquisto o di lavorazione), è un processo che valorizza un insieme di righe di entrata merci (movimenti di magazzino), creando la relativa scrittura contabile di insieme.

Una riga di sconto aggiuntiva va inserita come movimento aggiuntivo, così come quando inserite una riga aggiuntiva per le spese di trasporto.  Andate quindi in Magazzino – Movimenti. Cercate i movimenti di entrata di quel fornitore , di quel documento di trasporto. Oppure create un nuovo movimento su quel fornitore. In questo caso, i dati del documento (numero e data ddt) non sono obbligatori.

Andate nelle righe e create una nuova riga.

Dovete selezionare una causale di magazzino che determini una scrittura contabile inversa del valore : AC2. Selezionate un magazzino esistente, per esempio 1 (questo naturalmente è un proforma).

Inserite un articolo precedentemente creato, per esempio SCONTO,  la quantità ad 1 ed il valore che volete. Salvate la riga. Una volta spinto il pulsante di salvataggio vedrete che in basso a destra sarà selezionato la spunta su “Riga a Valore Negativo”.

Quando andate in Fatturazione Fornitori, vedrete anche questa nuova riga. Il “controlla dati” vi mostrerà un imponibile decurtato dello sconto.

Torna all’indice.

Posted on

ASP.NET MVC. first Model – Code first

In questo articolo cominceremo a creare qualcosa di nuovo nel nostro progetto . Utilizzeremo l’approccio “Code First”, cioè prima scriveremo il codice. Sembra banale dirlo,  ma Visual Studio consente, per esempio, anche l’approccio “Database First”.

Andate nella directory Model e create una nuova classe per esempio Student.cs.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MySite.Models
{
 public class Student
 {
 }
}

Aggiungete questo namespace

using System.ComponentModel.DataAnnotations.Schema;

Il nostro modello / classe è la rappresentazione, attraverso le sue proprietà, di una tabella che andremo a costruire su un database. Prima di tutto diciamo alla classe come si chiama la tabella che vogliamo.

[Table("STUDENTS")]
 public class Student
 {
 }

Poi creiamo le proprietà – campi della tabella. Aggiungete questo namespace :

using System.ComponentModel.DataAnnotations;

la nostra tabella è composta da 3 campi

[Table("STUDENTS")]
 public class Student
 {
 [Key]
 [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
 public int ID { get; set; }

[Required]
 [StringLength(200)]
 [Display(Name = "Name")]
 public string NAME { get; set; }

[StringLength(300)]
 [Display(Name = "Surname")]
 public string SURNAME { get; set; }
 }

Le DataAnnotation sopra le proprietà definiscono le caratteristiche dei campi della tabella : ID sarà la chiave primaria (key), e SQLServer si occuperà di assegnare il numero (DatabaseGeneratedOption.Identity). NAME è un campo obbligatorio (Required) di lunghezza 200, la cui descrizione in visualizzazione sarà “Name”.etc.

Ora dobbiamo aggiungere al DBContext la presenza di questa tabella. Aprite la classe ApplicationDbContext e aggiungete come proprietà la nuova tabella :

public DbSet<Student> Students { get; set; }

Provate a lanciare l’applicazione ed ad effettuare un login per testare che tutto funzioni. Andate sul database e costruite le tabella rispettando i nomi.

 

 

Posted on Lascia un commento

MEKERP : DISPONIBILITA DI MAGAZZINO

L’equazione fondamentale del magazzino ci insegna che :

DISPONIBILITÀ = GIACENZA + ORDINATO – IMPEGNATO

Con DISPONIBILITÀ’ intendiamo tutte le risorse a cui l’azienda può accedere adesso o nell’immediato futuro. Le risorse a cui l’azienda può accedere subito sono sicuramente quelle presenti attualmente nel magazzino : GIACENZA.

Le risorse disponibili sono anche quelle che stanno per entrare nel magazzino, quelle che abbiamo ORDINATO : non sono presenti ora ma lo saranno nell’immediato futuro.

Al numero delle risorse disponibili dobbiamo togliere tutto ciò che ci serve per fare qualcosa e di cui siamo già a conoscenza : IMPEGNATO

ORDINATO : Un oggetto può essere ordinato ad un fornitore (acquisto) oppure all’officina interna (produzione). Quando questi ordini saranno evasi l’ordinato si trasformerà in giacenza mantenendo inalterata la disponibilità.

IMPEGNATO  : Un oggetto può essere impegnato perché richiesto da un cliente (impegnato da ordine cliente) oppure perché necessario per costruire un altro oggetto (impegnato da produzione – consumo).

In definitiva la nostra equazione del magazzino diventa :

DISPONIBILITÀ’ = GIACENZA + ORDINATO A FORNITORI + ORDINATO ALLA PRODUZIONE – IMPEGNATO DA CLIENTI – IMPEGNATO DA PRODUZIONE.


Nel Mekerp, in anagrafica articoli, possiamo vedere in tempo reale la situazione del magazzino.

In alto possiamo vedere i dati di disponibilità, giacenza, ordinato ed impegnato per ciascun magazzino. In basso possiamo vedere il dettaglio dei documenti che hanno determinato i vari numeri :

  • Ordini clienti aperti (impegnato)
  • Ordini di acquisto aperti (ordinato)
  • Ordini di produzione aperti (ordinato)
  • Consumo in produzione (impegnato)

Torna all’indice.

Posted on

ASP.NET MVC : ACCESSO AI DATI

ApplicationDbContext

Nell’articolo precedente abbiamo introdotto la classe ApplicationDbContext.

Cercatela nel progetto. Dovreste trovarla all’interno del file IdentityModels.cs. Questa classe deriva dalla classe IdentityDbContext che a sua volta deriva da DbContext.

DbContext è la classe di accesso ad un database. Il costruttore della classe ha come parametro il nome della stringa di connessione che avevamo precedentemente trovato nel file Web.config.

public ApplicationDbContext() : base("DefaultConnection")
 {
 }

Soffermiamoci su questa informazione : nel Web.config potete inserire più stringhe di connessione e quindi testare l’applicazione su database diversi, cambiando il parametro qui sopra, oppure creare una applicazione che si connette a diversi database definendo più di un DbContext.

All’interno di un DbContext dovranno essere referenziate tutte le tabelle del database che vogliamo usare nella nostra applicazione: o meglio, tutte le tabelle che hanno dei vincoli tra loro.

Se per esempio volessimo legare alla tabella degli utenti creata da Visual Studio, una seconda tabella creata da noi, le 2 tabelle dovrebbero fare parte dello stesso DbContext. Ma noi non sappiamo niente delle tabelle per la gestione degli utenti create in automatico. La classe IdentityDbContext contiene i riferimenti a queste tabelle. Per questo motivo il nostro ApplicationDbContext non deriva da DbContext ma da IdentityDBContext che contiene, appunto, qualche informazione in più.

Mano a mano che aggiungerete tabelle alla applicazione andrete a lavorare sulla classe ApplicationDbContext. Per rendere il codice più ordinato, nella directory Models andate a creare un nuovo file ApplicationDbContext.cs e copiate in questa classe il codice di ApplicationDbContext (solo quello) che era presente in IdentityModels.cs.

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
 {
     public ApplicationDbContext()
     : base("DefaultConnection")
     {
     }

     public static ApplicationDbContext Create()
     {
       return new ApplicationDbContext();
     }
 }

Provate a lanciare l’applicazione ed ad effettuare un login per testare che tutto funzioni.

 

Posted on

MEKERP: PARTITA DOPPIA

Quando si applica il metodo della partita doppia, i conti assumono sempre la forma a due sezioni, costituite dalla sezione Dare a sinistra e dalla sezione Avere a destra.
Nella partita doppia le scritture sono almeno due: una in Dare di un conto ed una, dello stesso importo, in Avere di un altro conto. In questo caso (2 soli conti), parliamo di “Giroconto”.

Nell’ipotesi assai diffusa di più scritture in Dare e più scritture in Avere, ciò che conta è che il totale delle registrazioni in Dare sia uguale al totale delle scritture in Avere.

Con il metodo della partita doppia occorre registrare ogni quantità due volte, contemporaneamente, in conti diversi e sezioni opposte, in modo che si attui sempre l’uguaglianza tra addebitamenti ( iscrizione di ammontari nella sezione Dare) e accreditamenti ( iscrizione di ammontari nella sezione Avere).

La contabilità generale, tenuta in partita doppia, presuppone la preventiva redazione di un piano dei conti, cioè la definizione dei conti che costituiranno il sistema contabile.

Le rilevazioni si articolano come segue:

  • le operazioni di gestione si annotano man mano che avvengono nella prima nota;
  • tali operazioni vengono trascritte sul libro giornale in partita doppia, nel rispetto di determinate regole formali, con l’indicazione della descrizione (riferimenti ai documenti originari) e dei conti da addebitare e da accreditare per le variazioni patrimoniali ed economiche intervenute;
  • le registrazioni sul libro giornale sono effettuate in ordine cronologico;
  • nei conti del mastro si riportano gli addebitamenti e gli accreditamenti in base alle indicazioni già scritte sul libro giornale;
  • le registrazioni nei conti sono effettuate a seconda del loro oggetto, cioè in ordine sistematico;
  • periodicamente si redigono delle situazioni contabili, cioè dei prospetti nei quali si elencano i conti di mastro con le movimentazioni da essi subite (in Dare e in Avere) e i relativi saldi allo scopo di controllare il rispetto dell’eguaglianza tra importi addebitati e importi accreditati nel sistema dei conti e per prendere conoscenza delle grandezze patrimoniali ed economiche movimentate.

Torna all’indice.


note. questo testo o parti di esso è stato prelevato da Internet nel 2002 per uso formativo interno all’azienda . Non abbiamo segnato la fonte. Se questo testo dovesse violare le regole del diritto di autore, contattateci all’indirizzo info@mecdata.it. Provvederemo a notificare la fonte o a rimuovere il testo.