/// <summary> /// Geração do Código de barras Ean /// </summary> /// <param name="CompanyPrefix">Prefixo da Empresa</param> /// <param name="ItemReference">Código do item</param> /// <param name="partition">Numeto da Partição</param> /// <returns>Ean</returns> public static string getbarcodeEan13(long CompanyPrefix, long ItemReference, int partition = 6) { var CompaniaDigito = SgtinPartition.GetCompanyDigitos(partition); var auxCompany = CompanyPrefix.ToString(); if (auxCompany.Length > CompaniaDigito) { auxCompany = auxCompany.Substring(1, auxCompany.Length - 1); } if (auxCompany.Length < CompaniaDigito) { auxCompany = HelperConverter.fill(auxCompany, CompaniaDigito); } var itemDigito = SgtinPartition.GetItemDigitos(partition) - 1; var auxItem = ItemReference.ToString(); if (auxItem.Length > itemDigito) { auxItem = auxItem.Substring(1, auxItem.Length - 1); } if (auxItem.Length < itemDigito) { auxItem = HelperConverter.fill(auxItem, itemDigito); } string fullEan = $"{auxCompany}{auxItem}"; int calculo = GTINCheckDigito(fullEan); return($"{fullEan}{calculo}"); }
/// <summary> /// Contrutor via Código de barras /// </summary> /// <param name="barcode">Código de Barras</param> /// <param name="serial">Série</param> /// <param name="Filter">Filter</param> /// <param name="part">Partição</param> public Sgtin96(string barcode, long serial, string Filter, int part = 6) { //Se vier com "0" no inicio if (barcode.Substring(0, 1) == "0") { barcode = barcode.Substring(1, barcode.Length - 1); } //preenche com "0" se não for um ean 13 barcode = HelperConverter.fill(barcode, 12); this.Header = EpcHeaders.GetName(EpcHeaders.SGTIN_96); this.Filter = Filter; this.Partition = part; string auxbarcode = barcode.Substring(0, (barcode.Length - 1)); this.CompanyPrefix = Convert.ToInt64(HelperConverter.fill(auxbarcode.Substring(0, SgtinPartition.GetCompanyDigitos(this.Partition)), SgtinPartition.GetCompanyDigitos(this.Partition))); this.ItemReference = Convert.ToInt64( HelperConverter.fill( auxbarcode.Substring(SgtinPartition.GetCompanyDigitos(this.Partition), (auxbarcode.Length - SgtinPartition.GetCompanyDigitos(this.Partition))), SgtinPartition.GetItemDigitos(this.Partition))); this.SerialNumber = serial; this.Barcode = barcode; }
/// <summary> /// Método de Decodificação da string binária para valores legíveis /// </summary> /// <param name="linhaBinaria">Descriptografa a string Binária no padrão GS1</param> public void Decript(string linhaBinaria) { int posicaoInicial = 0; this.Header = EpcHeaders.GetName(linhaBinaria.Substring(posicaoInicial, 8)); posicaoInicial += 8; this.Filter = Convert.ToInt32(linhaBinaria.Substring(posicaoInicial, 3), 2).ToString(); posicaoInicial += 3; this.Partition = Convert.ToInt32(linhaBinaria.Substring(posicaoInicial, 3), 2); posicaoInicial += 3; this.CompanyPrefix = Convert.ToInt64(linhaBinaria.Substring(posicaoInicial, SgtinPartition.GetCompany(this.Partition)), 2); posicaoInicial += SgtinPartition.GetCompany(this.Partition); this.ItemReference = Convert.ToInt64(linhaBinaria.Substring(posicaoInicial, SgtinPartition.GetItem(this.Partition)), 2); posicaoInicial += SgtinPartition.GetItem(this.Partition); this.SerialNumber = Convert.ToInt64(linhaBinaria.Substring(posicaoInicial, 38), 2); this.Barcode = HelperBarcode.getbarcodeEan13(CompanyPrefix, ItemReference, Partition); }
/// <summary> /// Url EPC de Tag /// </summary> /// <returns></returns> public string EpcTagURI() { return($"urn:epc:tag:{this.Header}:{this.Filter}.{HelperConverter.fill(this.CompanyPrefix.ToString(), SgtinPartition.GetCompanyDigitos(this.Partition))}.{HelperConverter.fill(this.ItemReference.ToString(), SgtinPartition.GetItemDigitos(this.Partition))}.{this.SerialNumber}"); }
/// <summary> /// Url EPC de identificação pura /// </summary> /// <returns></returns> public string EpcPureURI() { return($"urn:epc:id:sgtin:{HelperConverter.fill(this.CompanyPrefix.ToString(), SgtinPartition.GetCompanyDigitos(this.Partition))}.{HelperConverter.fill(this.ItemReference.ToString(), SgtinPartition.GetItemDigitos(this.Partition))}.{this.SerialNumber}"); }
/// <summary> /// Método de Codificação segundo o Padrão EPC /// </summary> /// <returns>Objeto Simplicado do padrão</returns> public EPCSimplesDTO Encript() { string Header = EpcHeaders.GetBin(this.Header); string Filter = HelperConverter.fill(Convert.ToString(Convert.ToInt32(this.Filter), 2), 3); string Partition = HelperConverter.fill(Convert.ToString(this.Partition, 2), 3); string CompanyPrefix = HelperConverter.fill(Convert.ToString(this.CompanyPrefix, 2), SgtinPartition.GetCompany(this.Partition)); string ItemReference = HelperConverter.fill(Convert.ToString(this.ItemReference, 2), SgtinPartition.GetItem(this.Partition)); string SerialNumber = HelperConverter.fill(Convert.ToString(this.SerialNumber, 2), 38); string BinString = $"{Header}{Filter}{Partition}{CompanyPrefix}{ItemReference}{SerialNumber}"; EPCSimplesDTO retorno = new EPCSimplesDTO(); retorno.BarCode = this.Barcode; retorno.EPCString = EpcTagURI(); retorno.HexadecimalString = HelperConverter.BinaryStringToHexString(BinString); return(retorno); }