-
Liczba zawartości
342 -
Rejestracja
-
Ostatnia wizyta
Zawartość dodana przez Radek A
- Poprzednia
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Dalej
-
Strona 2 z 14
-
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
Jest szansa, aby na liście magazynowej w kolumnie z ilościami produktów do zebrania zrobić większą czcionkę tylko w przypadku gdy ilość jest >1 ? Inaczej mówiąc, jeśli jest 1szt. to zostaje bez zmian, a jeśli jest 2 i więcej to czcionka 2x większa? -
Organizacja pracy; wydruki paragonów i etykiet wysyłkowych
Radek A odpowiedział Radek A → na temat → Forum użytkowników - Sello - Pomocna dłoń
To chyba z Sello nie będzie możliwe, zwłaszcza; "to program automatycznie drukuje dokument sprzedaży i tworzy etykietę kurierską. " -
Organizacja pracy; wydruki paragonów i etykiet wysyłkowych
Radek A odpowiedział Radek A → na temat → Forum użytkowników - Sello - Pomocna dłoń
Pierwszy pomysł ma jedną poważną wadę, a mianowicie jest zbyt wolny i wymagałby "latania" pomiędzy pakowaniem, a stanowiskiem sprzedaży z drukarką fiskalną i etykieciarką. Na drugą sugestię nie mam pomysłu, ale na pewno najlepszym rozwiązaniem byłby jakiś skaner i umieszczenie unikalnych kodów na dokumencie sprzedaży i etykiecie lub taki, który porównywałby nr nadania etykiety z kodem nadrukowanym na paragonie/FV. Taki ręczny skaner mógłby też pomóc przy zbieraniu towarów z magazynu, gdyż każdy towar ma etykietę z nr EAN, co też pomogłoby wyeliminować pomyłki przy zbieraniu nie tego towaru. -
Szukam sposobu na polepszenie organizacji pracy. Jestem ciekaw jak to u was wygląda? My obecnie realizujemy transakcje partiami po ok. 40 paczek. Czyli zbiorczo drukujemy paragony i FV, następnie drukujemy etykiety A6 oraz listę magazynową A4. Jedna osoba zbiera towary z listy magazynowej, druga zaś paruje etykiety nadawcze A6, które w opisach zawartości zawierają w pierwszej linii nr dokumentu sprzedaży z paragonami i fakturami. Następnie taki komplet (dokument sprzedaży+etykieta+towar) ląduje na stole do pakowania. Problem w tym, że o ile paragony i FV drukują się w kolejności, to etykiety nadawcze już nie. Trzeba je sortować ręcznie i przyczepiać do paragonów, co zajmuje sporo czasu i w dodatku potrafi powstać czeski błąd. Jaki macie inny sprawdzony sposób? Wydaje mi się, że jakby etykiety drukowały się w takiej samej kolejności jak dokumenty sprzedaży to problemu by nie było... Do tej pory dla ułatwienia pracy, zrobiliśmy większe i pogrubione symbole na liście magazynowej, na dokumentach sprzedaży symbol jest drukowany jako pierwszy przed nazwą towaru, lista magazynowa ma sortowanie po polach własnych (nr regału i półki z Subiekta, które są przypisane do każdego towaru) dla ułatwienia zbierania towarów w kolejności, aby nie latać po magazynie jak pszczoła.
-
INPOST - API ShipX...
Radek A odpowiedział MARCIN e-kupowanie.pl → na temat → Forum użytkowników - Sello - Dyskusje
Wystarczy w Adobe w preferencjach języka zaznaczyć ligatury -
INPOST - API ShipX...
Radek A odpowiedział MARCIN e-kupowanie.pl → na temat → Forum użytkowników - Sello - Dyskusje
Potwierdzam -
Nowa forma dostawy Allegro Punkty - błąd przy tworzeniu etykiet.
Radek A odpowiedział Mariusz Walaszek → na temat → Forum użytkowników - Sello - Nowości i sugestie
Opis zawartości: [Aukcja::Tytul] -> pokazuje błąd, że opis przesyłki za krótki, jak wstawię [Towar::Nazwa] [Aukcja::Tytul] -> to mam błąd; Kod błędu: 0 [ERROR]: Opcja 'Inne dane na etykiecie' nie są dostępne dla wybranego przewoźnika ścieżka: /sender Jaka jest wartość domyślna w polu Opis zawartości: ? -
Nowa forma dostawy Allegro Punkty - błąd przy tworzeniu etykiet.
Radek A odpowiedział Mariusz Walaszek → na temat → Forum użytkowników - Sello - Nowości i sugestie
Teraz jest jeszcze taki błąd -
Nowa forma dostawy Allegro Punkty - błąd przy tworzeniu etykiet.
Radek A odpowiedział Mariusz Walaszek → na temat → Forum użytkowników - Sello - Nowości i sugestie
-
Nowa forma dostawy Allegro Punkty - błąd przy tworzeniu etykiet.
Radek A odpowiedział Mariusz Walaszek → na temat → Forum użytkowników - Sello - Nowości i sugestie
Dobrze rozumiem, że UPS Allegro obsługuje "Numer referencyjny", a Allegro One tego nie widzi? Dziś próbowałem wrzucić w nr.ref w WzA Allegro One "[Transakcja::DokumKoncowy|replace=`/==-`]" ale wyrzuca błąd, przy pozostawieniu pustego pola również błąd... -
Poszukuje listy magazynej/ listy dla pakowaczy
Radek A odpowiedział Sławomir B → na temat → Forum użytkowników - Sello - Dodatki i programy zewnętrzne - Wydruki
Ja mam jeszcze jedno marzenie, aby do listy dodać nr dokumentu sprzedaży oraz nr paczkomatu (oczywiście tylko jeśli wybrana forma przesyłki to paczkomat). Ktoś coś? -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
@Bartosz Rosa poszło - dziękuje, musiałem tylko usunąć fragment z wagą, bo nie udało mi się go przenieść pod symbol, za nazwą towaru, ale w sumie nie jest to dla mnie istotny parametr. Za to bardzo ułatwiło by sprawę umieszczenie kodu EAN na liście, np. zamiast pola "Uwagi:" ? Pomożecie? -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
Podpowiecie Panowie gdzie zamienić miejscami symbol z nazwą towaru? -
Jak zmienić konfiguracje wysyłki UPS na wartości stałe
Radek A odpowiedział Ewelina Kasińska → na temat → Forum użytkowników - Sello - Pomocna dłoń
@Ewelina Kasińska zanosisz przesyłki do punktu, czy może jak masz więcej to kurier odbiera? -
Lista magazynowa zmiana wielkości czcionki
Radek A odpowiedział Radek A → na temat → Forum użytkowników - Sello - Dodatki i programy zewnętrzne - Wydruki
Tak, pozmieniałem wszystkie jakie znalazłem na większe i w zasadzie zadziałało tylko na pageheader i liczbie porządkowej... -
Lista magazynowa zmiana wielkości czcionki
Radek A dodał temat → w Forum użytkowników - Sello - Dodatki i programy zewnętrzne - Wydruki
Jak zmienić wielkość czcionki nazwy, symbolu i sumy towarów w liście magazynowej do spakowania? -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
Lista magazynowa NEW4aa.repx -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
Zerkałeś może,czy u Ciebie też pojawia się błąd CS0019 w moim kodzie? -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
@Bartosz Rosa chętnie -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
using System.Data; using System.Collections.Generic; using System; using System.Text; using System.IO; using System.Data.SqlClient; public interface IDataRecordToProductDbResultMapper { void Map(IDataRecord record, ProductDbResult productResult); } public enum OwnFieldType { selloInternal, selloExternal } public interface IOwnField { string Name { get; set; } string Value { get; set; } OwnFieldType Type { get; set; } } public interface IProductDataStore { List<ProductDbResult> GetProductsDataBySymbol(List<string> symbols); List<ProductDbResult> GetProductsDataByName(List<string> names); bool CheckDbCompatibility(); string LoginSQL { get; set; } string HasloSQL { get; set; } string InstancjaSQL { get; set; } string BazaDanychSQL { get; set; } bool AutentykacjaWindows { get; set; } string MagazynNazwaPolaWlasnego { get; set; } string PolkaMagazynowaNazwaPolaWlasnego { get; set; } string UwagiNazwaPolaWlasnego { get; set; } int CommandTimeout { get; set; } int ConnectionTimeout { get; set; } int ImageOrderNumber { get; set; } bool IsSqlError(); string SqlErrorText(); } public interface IProductDbMapper { void Map(Product pr, List<ProductDbResult> record); } public interface IProductOwnFieldMapper { string Map(ProductOwnFieldType ownFieldType); } public interface IProductSorter { List<Product> Sort(List<Product> products); } public interface IUniqueProducts { decimal TotalCount { get; set; } void Add(Product product); List<Product> GetProducts(); void Sort(IProductSorter sorter); int ProductCount { get; } } public class DataRecordToProductDbResultMapper : IDataRecordToProductDbResultMapper { public DataRecordToProductDbResultMapper() { } public void Map (IDataRecord record, ProductDbResult productResult) { for (int i=0; i<record.FieldCount;i++) { switch (record.GetName(i)) { case "name": if (!DBNull.Value.Equals(record[i])) { productResult.Name = record.GetString(i); } break; case "symbol": if (!DBNull.Value.Equals(record[i])) { productResult.Symbol = record.GetString(i); } break; case "idSello": if (!DBNull.Value.Equals(record[i])) { productResult.IdSello = record.GetInt32(i); } break; case "obrazek": if (!DBNull.Value.Equals(record[i]) && ((byte[])record[i]).Length > 0) { productResult.Image = new MemoryStream((byte[])record[i]); } break; case "price": if (!DBNull.Value.Equals(record[i])) { productResult.Price = record.GetDecimal(i); } break; case "weight": if (!DBNull.Value.Equals(record[i])) { productResult.Weight = record.GetDecimal(i); } break; case "ownFieldSelloExtName": if (!DBNull.Value.Equals(record[i])) { string value = record["ownFieldSelloExtValue"].ToString(); productResult.OwnFieldSelloExtName = record.GetString(i); productResult.OwnFieldSelloExtValue = value; } break; case "MetricUnit": if (!DBNull.Value.Equals(record[i])) { productResult.MetricUnit = record.GetString(i); } break; default: break; } } } } public enum ProductOwnFieldType { Warehouse, Shelf, Notice } public class ProductOwnFieldMapper : IProductOwnFieldMapper { string OwnFieldWarehouseName; string OwnFieldShelfName; string OwnFieldNoticeName; public ProductOwnFieldMapper(string OwnFieldWarehouseName, string OwnFieldShelfName, string OwnFieldNoticeName) { this.OwnFieldWarehouseName = OwnFieldWarehouseName; this.OwnFieldShelfName = OwnFieldShelfName; this.OwnFieldNoticeName = OwnFieldNoticeName; } public string Map(ProductOwnFieldType ownFieldType) { switch (ownFieldType) { case ProductOwnFieldType.Warehouse: return OwnFieldWarehouseName; case ProductOwnFieldType.Shelf: return OwnFieldShelfName; case ProductOwnFieldType.Notice: return OwnFieldNoticeName; default: return string.Empty; } } } public class ProductToProductDbResultMapper : IProductDbMapper { public void Map(Product pr, List<ProductDbResult> records) { List<ProductDbResult> matchingRecords; if (string.IsNullOrEmpty(pr.Name)) throw new Exception("Wykryto produkt bez nazwy. Produkt musi posiadać nazwę"); if (!string.IsNullOrEmpty(pr.Symbol)) { matchingRecords=records.FindAll(delegate (ProductDbResult rec) { if (!string.IsNullOrEmpty(rec.Symbol)) { return (rec.Symbol.Equals(pr.Symbol) && pr.Name.Equals(rec.Name)); } return false; }); } else { if (!string.IsNullOrEmpty(pr.Name)) { matchingRecords = records.FindAll(delegate (ProductDbResult rec) { if (!string.IsNullOrEmpty(rec.Name)) { return (rec.Name.Equals(pr.Name) && string.IsNullOrEmpty(rec.Symbol)); } return false; }); foreach (ProductDbResult record in matchingRecords) { if (!string.IsNullOrEmpty(record.Symbol)) throw new Exception("Produkt bez symbolu posiada symbol"); } } else throw new Exception("Produkt bez symbolu i nazwy"); } if (matchingRecords.Count > 0) { foreach (ProductDbResult record in matchingRecords) { if (record.IdSello.HasValue) pr.DbId = (int)record.IdSello; if (record.Price.HasValue) pr.Price = (decimal)record.Price; if (record.Weight.HasValue) pr.Weight = (decimal)record.Weight; if (!string.IsNullOrEmpty(record.OwnFieldSelloExtName)) { if (!string.IsNullOrEmpty(record.OwnFieldSelloExtValue)) pr.AddOwnField(pr.CreateOwnField(record.OwnFieldSelloExtName, record.OwnFieldSelloExtValue, OwnFieldType.selloExternal)); } if (record.Image.Length > 0) pr.Image = record.Image; if (!string.IsNullOrEmpty(record.MetricUnit)) pr.JednMiarySprzedSubiekt = record.MetricUnit; } } } } class OwnField : IOwnField { private string _Value; public string Value { get { return _Value; } set { _Value = value; } } private string _Name; public string Name { get { return _Name; } set { _Name = value; } } private OwnFieldType _Type; public OwnFieldType Type { get { return _Type; } set { _Type = value; } } } public class Product { private int _dbId; public int DbId { get { return _dbId; } set { _dbId = value; } } private string _Name; public string Name { get { return _Name; } set { _Name = value; } } private string _Symbol; public string Symbol { get { return _Symbol; } set { _Symbol = value; } } private decimal _Count; public decimal Count { get { return _Count; } set { _Count = value; } } private MemoryStream _Image; public MemoryStream Image { get { return _Image; } set { _Image = value; } } private string _JednMiarySprzedSubiekt; public string JednMiarySprzedSubiekt { get { return _JednMiarySprzedSubiekt; } set { _JednMiarySprzedSubiekt = value; } } private decimal _Weight; public decimal Weight { get { return _Weight; } set { _Weight = value; } } private decimal _Price; public decimal Price { get { return _Price; } set { _Price = value; } } private List<IOwnField> ownFields; public string GetOwnFieldValue(string fieldName) { IOwnField result; result =ownFields.Find(delegate (IOwnField x) { return x.Name.Equals(fieldName); }); if (result != null) return result.Value; return string.Empty; } IProductOwnFieldMapper ownFieldsMapper; public string OwnFieldWarehouseValue { get { return GetOwnFieldValue(ownFieldsMapper.Map(ProductOwnFieldType.Warehouse)); } } public string OwnFieldShelfValue { get { return GetOwnFieldValue(ownFieldsMapper.Map(ProductOwnFieldType.Shelf)); }} public string OwnFieldNoticeValue { get { return GetOwnFieldValue(ownFieldsMapper.Map(ProductOwnFieldType.Notice)); } } public void AddOwnField(IOwnField ownField) { ownFields.Add(ownField); } public IOwnField CreateOwnField(string name, string value, OwnFieldType type) { IOwnField field= new OwnField(); field.Name = name; field.Value = value; field.Type = type; return field; } public Product(IProductOwnFieldMapper mapper) { ownFields = new List<IOwnField>(); Image = new MemoryStream(new byte[0]); ownFieldsMapper = mapper; Name = string.Empty; Symbol = string.Empty; JednMiarySprzedSubiekt = string.Empty; } } public class AlphaNumericProductComparer:IComparer<Product> { public int Compare(Product twA, Product twB) { string A = twA.OwnFieldWarehouseValue.PadLeft(2, '0'); string B = twB.OwnFieldWarehouseValue.PadLeft(2, '0'); if (A>B ) return 1; else if (A < B ) return -1; else { string shelfA = twA.OwnFieldShelfValue.PadLeft(5, '0'); string shelfB = twB.OwnFieldShelfValue.PadLeft(5, '0'); if (shelfA > shelfB) return 1; else if (shelfA < shelfB) return -1; else { if (twA.Name.CompareTo(twB.Name) > 0) return 1; if (twA.Name.CompareTo(twB.Name) < 0) return -1; if (twA.Name.CompareTo(twB.Name) == 0) { if (twA.Symbol.CompareTo(twB.Symbol) > 0) return 1; if (twA.Symbol.CompareTo(twB.Symbol) < 0) return -1; } } } return 0; } } public class ProductComparer:IComparer<Product> { public int Compare(Product twA, Product twB) { if (twA.OwnFieldWarehouseValue.CompareTo(twB.OwnFieldWarehouseValue) > 0) return 1; if (twA.OwnFieldWarehouseValue.CompareTo(twB.OwnFieldWarehouseValue) < 0) return -1; if (twA.OwnFieldWarehouseValue.CompareTo(twB.OwnFieldWarehouseValue) == 0) { if (twA.OwnFieldShelfValue.CompareTo(twB.OwnFieldShelfValue) > 0) return 1; if (twA.OwnFieldShelfValue.CompareTo(twB.OwnFieldShelfValue) < 0) return -1; if (twA.OwnFieldShelfValue.CompareTo(twB.OwnFieldShelfValue) == 0) { if (twA.Name.CompareTo(twB.Name) > 0) return 1; if (twA.Name.CompareTo(twB.Name) < 0) return -1; if (twA.Name.CompareTo(twB.Name) == 0) { if (twA.Symbol.CompareTo(twB.Symbol) > 0) return 1; if (twA.Symbol.CompareTo(twB.Symbol) < 0) return -1; } } } return 0; } } class ProductDataStoreSelloSQLSrv : IProductDataStore { SQLErrorMessage sqlError; private string _LoginSQL; public string LoginSQL { get { return _LoginSQL; } set { _LoginSQL = value; } } private string _HasloSQL; public string HasloSQL { get { return _HasloSQL; } set { _HasloSQL = value; } } private string _InstancjaSQL; public string InstancjaSQL { get { return _InstancjaSQL; } set { _InstancjaSQL = value; } } private string _BazaDanychSQL; public string BazaDanychSQL { get { return _BazaDanychSQL; } set { _BazaDanychSQL = value; } } private bool _AutentykacjaWindows; public bool AutentykacjaWindows { get { return _AutentykacjaWindows; } set { _AutentykacjaWindows = value; } } private string _MagazynNazwaPolaWlasnego; public string MagazynNazwaPolaWlasnego { get { return _MagazynNazwaPolaWlasnego; } set { _MagazynNazwaPolaWlasnego = value; } } private string _PolkaMagazynowaNazwaPolaWlasnego; public string PolkaMagazynowaNazwaPolaWlasnego { get { return _PolkaMagazynowaNazwaPolaWlasnego; } set { _PolkaMagazynowaNazwaPolaWlasnego = value; } } private string _UwagiNazwaPolaWlasnego; public string UwagiNazwaPolaWlasnego { get { return _UwagiNazwaPolaWlasnego; } set { _UwagiNazwaPolaWlasnego = value; } } private int pageSize; private int _cmdTimeout; public int CommandTimeout { get { return _cmdTimeout; } set { _cmdTimeout = value; } } private int _cnnTimeout; public int ConnectionTimeout { get { return _cnnTimeout; } set { _cnnTimeout = value; } } private int _imageOrderNumber; public int ImageOrderNumber { get { return _imageOrderNumber; } set { _imageOrderNumber = value; } } public bool IsSqlError() { return sqlError.wystapilBlad; } public string SqlErrorText() { return sqlError.bladTekst(); } IDataRecordToProductDbResultMapper mapper; public ProductDataStoreSelloSQLSrv(SQLErrorMessage msg, IDataRecordToProductDbResultMapper mapper) { sqlError = msg; pageSize = 50; CommandTimeout = 45; ConnectionTimeout = 45; this.mapper = mapper; ImageOrderNumber = 0; } private string GetConnectionString() { SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.ConnectTimeout = ConnectionTimeout; sb.DataSource = InstancjaSQL; sb.Password = HasloSQL; sb.UserID = LoginSQL; sb.InitialCatalog = BazaDanychSQL; return sb.ConnectionString; } public bool CheckDbCompatibility() { using (SqlConnection conn = new SqlConnection(GetConnectionString())) { try { conn.Open(); } catch (SqlException ex) { sqlError.pobierzBlad(ex); return false; } SqlCommand command = conn.CreateCommand(); string sql = "SELECT TOP(1) it_id, it_Name, it_Symbol, it_Price, it_Weight FROM it__Item, st_Shipping, sl_PricingList"; command.CommandText = sql; command.CommandTimeout = CommandTimeout; try { using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) return true; } } catch (SqlException ex) { sqlError.pobierzBlad(ex); } } return false; } public List<ProductDbResult> GetProductsDataBySymbol(List<string> symbols) { List<ProductDbResult> result = new List<ProductDbResult>(); using (SqlConnection conn = new SqlConnection(GetConnectionString())) { string sqlTowaryBezZdjec= @"SELECT it_id as idSello, q1.it_Name as name, q1.it_Symbol as symbol, it_Price as price, it_Weight as weight, ca_dict.ecd_SelloName as ownFieldSelloExtName, ca.eca_Value ownFieldSelloExtValue FROM (SELECT MIN(it_id) as min_it_id, it_Name, it_Symbol FROM it__Item as product WHERE product.it_Symbol IN({0}) GROUP BY it_Symbol, it_Name) as q1 LEFT JOIN it__Item as product2 ON q1.min_it_id = product2.it_id LEFT JOIN it_ExternalCustomAttributes as ca ON ca.eca_ItemId = q1.min_it_id LEFT JOIN it_ExternalCustomAttributesDict as ca_dict ON ca_dict.ecd_Id = ca.eca_AttributeId"; List<int> idList = new List<int>(); string sql; SqlParamsPaged<string> paged = new SqlParamsPaged<string>(pageSize); paged.Init(symbols.ToArray()); try { conn.Open(); } catch (SqlException ex) { sqlError.pobierzBlad(ex); return result; } SqlCommand command = conn.CreateCommand(); ProductDbResult productDbResult; while (paged.GetNextPage()) { SqlParamsPagedResult<string> pgResult = new SqlParamsPagedResult<string>(); paged.GetCurrentParams(pgResult); sql = string.Format(sqlTowaryBezZdjec, pgResult.InClause); command.CommandText = sql; command.CommandTimeout = CommandTimeout; for (int i = 0; i < pgResult.Count; i++) { command.Parameters.AddWithValue(pgResult.ParamTags[i], pgResult.ParamValues[i]); } try { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { productDbResult = new ProductDbResult(); mapper.Map(reader, productDbResult); result.Add(productDbResult); if (idList.IndexOf((int)reader["idSello"]) == -1) { idList.Add((int)reader["idSello"]); } } } } catch (SqlException ex) { sqlError.pobierzBlad(ex); break; } } result.AddRange(GetPicturesById(idList, conn)); } return result; } private List<ProductDbResult> GetPicturesById(List<int> idList, SqlConnection conn) { SqlParamsPaged<int> pagedInt = new SqlParamsPaged<int>(pageSize); SqlCommand command = conn.CreateCommand(); List<ProductDbResult> result = new List<ProductDbResult>(); string sql; string sqlProductPicturesById = @"SELECT it_name as name, it_symbol as symbol, it_id as idSello, im_Image as obrazek, pc_PictureOrder as numerObrazka FROM it__item LEFT JOIN (SELECT pc_ItemId, pc_PictureId, pc_PictureOrder FROM it_ItemPictures WHERE pc_PictureOrder= {1}) as q1 ON it_id = q1.pc_ItemId LEFT JOIN im__Image ON pc_PictureId = im_Id WHERE it_id IN({0})"; pagedInt.Init(idList.ToArray()); command = conn.CreateCommand(); ProductDbResult productDbResult; while (pagedInt.GetNextPage()) { SqlParamsPagedResult<int> pgResult = new SqlParamsPagedResult<int>(); pagedInt.GetCurrentParams(pgResult); sql = string.Format(sqlProductPicturesById, pgResult.InClause, ImageOrderNumber); command.CommandText = sql; command.CommandTimeout = CommandTimeout; for (int i = 0; i < pgResult.Count; i++) { command.Parameters.AddWithValue(pgResult.ParamTags[i], pgResult.ParamValues[i]); } try { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { productDbResult = new ProductDbResult(); mapper.Map(reader, productDbResult); result.Add(productDbResult); } } } catch (SqlException ex) { sqlError.pobierzBlad(ex); } } return result; } public List<ProductDbResult> GetProductsDataByName(List<string> names) { List<ProductDbResult> result = new List<ProductDbResult>(); using (SqlConnection conn = new SqlConnection(GetConnectionString())) { string sqlTowaryBezZdjec = @"SELECT it_id as idSello, q1.it_Name as name, q1.it_Symbol as symbol, it_Price as price, it_Weight as weight, ca_dict.ecd_SelloName as ownFieldSelloExtName, ca.eca_Value ownFieldSelloExtValue FROM (SELECT MIN(it_id) as min_it_id, it_Name, it_Symbol FROM it__Item as product WHERE product.it_Name IN({0}) GROUP BY it_Symbol, it_Name) as q1 LEFT JOIN it__Item as product2 ON q1.min_it_id = product2.it_id LEFT JOIN it_ExternalCustomAttributes as ca ON ca.eca_ItemId = q1.min_it_id LEFT JOIN it_ExternalCustomAttributesDict as ca_dict ON ca_dict.ecd_Id = ca.eca_AttributeId"; string sql; List<int> idList = new List<int>(); SqlParamsPagedString paged = new SqlParamsPagedString(pageSize); paged.Init(names.ToArray()); try { conn.Open(); } catch (SqlException ex) { sqlError.pobierzBlad(ex); return result; } SqlCommand command = conn.CreateCommand(); ProductDbResult productDbResult; while (paged.GetNextPage()) { SqlParamsPagedStringResult pgResult = new SqlParamsPagedStringResult(); paged.GetCurrentParams(pgResult); sql = string.Format(sqlTowaryBezZdjec, pgResult.InClause); command.CommandText = sql; command.CommandTimeout = CommandTimeout; for (int i = 0; i < pgResult.Count; i++) { command.Parameters.AddWithValue(pgResult.ParamTags[i], pgResult.ParamValues[i]); } try { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { productDbResult = new ProductDbResult(); mapper.Map(reader, productDbResult); result.Add(productDbResult); if (idList.IndexOf((int)reader["idSello"]) == -1) { idList.Add((int)reader["idSello"]); } } } } catch (SqlException ex) { sqlError.pobierzBlad(ex); } } result.AddRange(GetPicturesById(idList, conn)); } return result; } } class ProductDataStoreSubiektGTSQLSrv : IProductDataStore { SQLErrorMessage sqlError; private string _LoginSQL; public string LoginSQL { get { return _LoginSQL; } set { _LoginSQL = value; } } private string _HasloSQL; public string HasloSQL { get { return _HasloSQL; } set { _HasloSQL = value; } } private string _InstancjaSQL; public string InstancjaSQL { get { return _InstancjaSQL; } set { _InstancjaSQL = value; } } private string _BazaDanychSQL; public string BazaDanychSQL { get { return _BazaDanychSQL; } set { _BazaDanychSQL = value; } } private bool _AutentykacjaWindows; public bool AutentykacjaWindows { get { return _AutentykacjaWindows; } set { _AutentykacjaWindows = value; } } private string _MagazynNazwaPolaWlasnego; public string MagazynNazwaPolaWlasnego { get { return _MagazynNazwaPolaWlasnego; } set { _MagazynNazwaPolaWlasnego = value; } } private string _PolkaMagazynowaNazwaPolaWlasnego; public string PolkaMagazynowaNazwaPolaWlasnego { get { return _PolkaMagazynowaNazwaPolaWlasnego; } set { _PolkaMagazynowaNazwaPolaWlasnego = value; } } private string _UwagiNazwaPolaWlasnego; public string UwagiNazwaPolaWlasnego { get { return _UwagiNazwaPolaWlasnego; } set { _UwagiNazwaPolaWlasnego = value; } } private int pageSize; private int _cmdTimeout; public int CommandTimeout { get { return _cmdTimeout; } set { _cmdTimeout = value; } } private int _cnnTimeout; public int ConnectionTimeout { get { return _cnnTimeout; } set { _cnnTimeout = value; } } private int _imageOrderNumber; public int ImageOrderNumber { get { return _imageOrderNumber; } set { _imageOrderNumber = value; } } public bool IsSqlError() { return sqlError.wystapilBlad; } public string SqlErrorText() { return sqlError.bladTekst(); } IDataRecordToProductDbResultMapper mapper; public ProductDataStoreSubiektGTSQLSrv(SQLErrorMessage msg, IDataRecordToProductDbResultMapper mapper) { sqlError = msg; pageSize = 50; CommandTimeout = 45; ConnectionTimeout = 45; this.mapper = mapper; ImageOrderNumber = 0; } private string GetConnectionString() { SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(); sb.ConnectTimeout = ConnectionTimeout; sb.DataSource = InstancjaSQL; sb.Password = HasloSQL; sb.UserID = LoginSQL; sb.InitialCatalog = BazaDanychSQL; return sb.ConnectionString; } public bool CheckDbCompatibility() { using (SqlConnection conn = new SqlConnection(GetConnectionString())) { try { conn.Open(); } catch (SqlException ex) { sqlError.pobierzBlad(ex); return false; } SqlCommand command = conn.CreateCommand(); string sql = "SELECT top(1) gto_Id, gtd_Id, dzp_Id FROM gt__Obiekt, gt_Definicja, dekz_Pozycja"; command.CommandText = sql; command.CommandTimeout = CommandTimeout; try { using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) return true; } } catch (SqlException ex) { sqlError.pobierzBlad(ex); } } return false; } public List<ProductDbResult> GetProductsDataBySymbol(List<string> symbols) { List<ProductDbResult> result = new List<ProductDbResult>(); using (SqlConnection conn = new SqlConnection(GetConnectionString())) { string sqlTowaryBezZdjec= @"SELECT tw.tw_Symbol as symbol,tw.tw_Nazwa as name, tw.tw_JednMiarySprz as MetricUnit FROM tw__Towar as tw WHERE tw_Symbol IN ({0}) AND tw.tw_Usuniety=0;"; List<int> idList = new List<int>(); string sql; SqlParamsPaged<string> paged = new SqlParamsPaged<string>(pageSize); paged.Init(symbols.ToArray()); try { conn.Open(); } catch (SqlException ex) { sqlError.pobierzBlad(ex); return result; } SqlCommand command = conn.CreateCommand(); ProductDbResult productDbResult; while (paged.GetNextPage()) { SqlParamsPagedResult<string> pgResult = new SqlParamsPagedResult<string>(); paged.GetCurrentParams(pgResult); sql = string.Format(sqlTowaryBezZdjec, pgResult.InClause); command.CommandText = sql; command.CommandTimeout = CommandTimeout; for (int i = 0; i < pgResult.Count; i++) { command.Parameters.AddWithValue(pgResult.ParamTags[i], pgResult.ParamValues[i]); } try { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { productDbResult = new ProductDbResult(); mapper.Map(reader, productDbResult); result.Add(productDbResult); } } } catch (SqlException ex) { sqlError.pobierzBlad(ex); break; } } } return result; } public List<ProductDbResult> GetProductsDataByName(List<string> names) { List<ProductDbResult> result = new List<ProductDbResult>(); return result; } } public class ProductDbResult { private string _name; public string Name { get { return _name; } set { _name = value; } } private string _symbol; public string Symbol { get { return _symbol; } set { _symbol = value; } } private int? _idSello; public int? IdSello { get { return _idSello; } set { _idSello = value; } } private decimal? _price; public decimal? Price { get { return _price; } set { _price = value; } } private decimal? _weight; public decimal? Weight { get { return _weight; } set { _weight = value; } } private string _ownFieldSelloExtName; public string OwnFieldSelloExtName { get { return _ownFieldSelloExtName; } set { _ownFieldSelloExtName = value; } } private string _ownFieldSelloExtValue; public string OwnFieldSelloExtValue { get { return _ownFieldSelloExtValue; } set { _ownFieldSelloExtValue = value; } } private MemoryStream _image; public MemoryStream Image { get { return _image; } set { _image = value; } } private string _metricUnit; public string MetricUnit { get { return _metricUnit; } set { _metricUnit = value; } } public ProductDbResult() { Image = new MemoryStream(); } } public class Products { IUniqueProducts uniqueProducts; List<IProductDataStore> dataStores; IProductDbMapper productMapper; IProductSorter sorter; IProductOwnFieldMapper ownFieldMapper; public Products(IUniqueProducts unProd, IProductDbMapper productMapper, IProductSorter sorter, IProductOwnFieldMapper ownFieldMapper) { uniqueProducts = unProd; dataStores = new List<IProductDataStore>(); this.productMapper = productMapper; this.sorter = sorter; this.ownFieldMapper = ownFieldMapper; } public Product CreateProduct() { return new Product(ownFieldMapper); } private void Sort() { uniqueProducts.Sort(sorter); } public void AddProduct(string symbol, string name, decimal price, decimal count) { Product pr = CreateProduct(); pr.Symbol = symbol; pr.Name = name; pr.Price = price; pr.Count = count; uniqueProducts.Add(pr); } public bool IsSqlError() { foreach (IProductDataStore store in dataStores) { if (store.IsSqlError()) return true; } return false; } public string SqlErrorText() { StringBuilder result=new StringBuilder(); foreach (IProductDataStore store in dataStores) { if (store.IsSqlError()) { result.Append(store.SqlErrorText()); } } return result.ToString(); } public bool CheckDbCompatibility() { foreach (IProductDataStore store in dataStores) { if (store.CheckDbCompatibility()) continue; if (store.IsSqlError()) return false; } return true; } public void FillProductData() { List<List<ProductDbResult>> symbolDataRecords=new List<List<ProductDbResult>>(), nameDataRecords=new List<List<ProductDbResult>>(); List<string> symbols; List<string> names; symbols = GetProductSymbols(GetProductsWithSymbols()); names = GetProductNames(GetProductsWithoutSymbols()); foreach(IProductDataStore store in dataStores) { symbolDataRecords.Add(store.GetProductsDataBySymbol(symbols)); if (store.IsSqlError()) return; nameDataRecords.Add(store.GetProductsDataByName(names)); if (store.IsSqlError()) return; } foreach (Product product in uniqueProducts.GetProducts()) { foreach (List<ProductDbResult> record in symbolDataRecords) { productMapper.Map(product, record); } foreach (List<ProductDbResult> record in nameDataRecords) { productMapper.Map(product, record); } } Sort(); } public void AddDataStore(IProductDataStore store) { dataStores.Add(store); } public List<Product> GetProductsWithSymbols() { List<Product> tempProductsWithSymbols = new List<Product>(); foreach (Product pr in uniqueProducts.GetProducts()) { if (!string.IsNullOrEmpty(pr.Symbol)) { tempProductsWithSymbols.Add(pr); } } return tempProductsWithSymbols; } public List<Product> GetProductsWithoutSymbols() { List<Product> tempProductsWithoutSymbols = new List<Product>(); foreach (Product pr in uniqueProducts.GetProducts()) { if (string.IsNullOrEmpty(pr.Symbol)) { tempProductsWithoutSymbols.Add(pr); } } return tempProductsWithoutSymbols; } public List<string> GetProductSymbols(List<Product> products) { List<string> tempProductSymbols = new List<string>(); foreach (Product pr in products) { if (!tempProductSymbols.Exists(delegate (string s) { return s.Equals(pr.Symbol); })) { tempProductSymbols.Add(pr.Symbol); } } return tempProductSymbols; } public List<string> GetProductNames(List<Product> products) { List<string> tempProductNames = new List<string>(); foreach (Product pr in products) { if (!tempProductNames.Exists(delegate (string s) { return s.Equals(pr.Name); })) { tempProductNames.Add(pr.Name); } } return tempProductNames; } public IUniqueProducts GetAllProducts() { return uniqueProducts; } } public class ProductSorter : IProductSorter { IComparer<Product> comparer; public ProductSorter(IComparer<Product> comparer) { this.comparer = comparer; } public List<Product> Sort(List<Product> products) { products.Sort(comparer); return products; } } public class SQLErrorMessage { StringBuilder errorMessages=new StringBuilder(); public bool wystapilBlad; public SQLErrorMessage() { wystapilBlad=false; } public void pobierzBlad(SqlException ex) { for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "SQL Wiadomosc: " + ex.Errors[i].Message + "\n" + "SQL wiersz numer: " + ex.Errors[i].LineNumber + "\n" + "Zrodlo: " + ex.Errors[i].Source + "\n" + "SQL Procedura: " + ex.Errors[i].Procedure + "\n"); } wystapilBlad = true; } public string bladTekst() { return errorMessages.ToString(); } } public class SqlParamsPagedStringResult { private string[] _paramValues; public string[] ParamValues { get { return _paramValues; } set { _paramValues = value; } } private string[] _paramTags; public string[] ParamTags { get { return _paramTags; } set { _paramTags = value; } } private string _inClause; public string InClause { get { return _inClause; } set { _inClause = value; } } private int _numberOfResults; public int Count { get { return _numberOfResults; } set { _numberOfResults = value; } } } public class SqlParamsPagedString { int pageSize; int currentPage; int paramsCount; private int _TotalPages; public int TotalPages { get { return _TotalPages; } set { _TotalPages = value; } } private string _tagPrefix; public string TagPrefix { get { return _tagPrefix; } set { _tagPrefix = value; } } public int CurrentPage { get { return currentPage; } set { currentPage = value; } } string[] paramValues; public SqlParamsPagedString(int pageSize) { if (pageSize <= 0) throw new ArgumentException("Wartość pageSize powinna być >0"); this.pageSize = pageSize; TagPrefix = "@tagSqlParamsPaged"; } public void Init(string[] paramValues) { this.paramValues = paramValues; CurrentPage = 0; this.paramsCount = paramValues.Length; double d=0; if (paramsCount > 0) { d = (double)paramsCount / pageSize; TotalPages = (int)Math.Ceiling(d); } else TotalPages = 0; } public bool GetNextPage() { if (CurrentPage < TotalPages) { CurrentPage++; return true; } return false; } public void GetCurrentParams(SqlParamsPagedStringResult result) { int numberOfResults; if ((pageSize * CurrentPage <= paramsCount)) numberOfResults = pageSize; else numberOfResults = (paramsCount - (pageSize * (CurrentPage - 1))); result.ParamTags = new string[numberOfResults]; result.ParamValues = new string[numberOfResults]; result.Count = numberOfResults; int iterationStart = (CurrentPage-1) * pageSize; for (int i=0; i<numberOfResults; i++) { result.ParamTags[i] = TagPrefix + (i+iterationStart+1).ToString(); result.ParamValues[i] = paramValues[i + iterationStart]; } result.InClause = string.Join(",", result.ParamTags); } } public class SqlParamsPagedResult<T> { private T[] _paramValues; public T[] ParamValues { get { return _paramValues; } set { _paramValues = value; } } private string[] _paramTags; public string[] ParamTags { get { return _paramTags; } set { _paramTags = value; } } private string _inClause; public string InClause { get { return _inClause; } set { _inClause = value; } } private int _numberOfResults; public int Count { get { return _numberOfResults; } set { _numberOfResults = value; } } } public class SqlParamsPaged<T> { int pageSize; int currentPage; int paramsCount; private int _TotalPages; public int TotalPages { get { return _TotalPages; } set { _TotalPages = value; } } private string _tagPrefix; public string TagPrefix { get { return _tagPrefix; } set { _tagPrefix = value; } } public int CurrentPage { get { return currentPage; } set { currentPage = value; } } T[] paramValues; public SqlParamsPaged(int pageSize) { if (pageSize <= 0) throw new ArgumentException("Wartość pageSize powinna być >0"); this.pageSize = pageSize; TagPrefix = "@tagSqlParamsPaged"; } public void Init(T[] paramValues) { this.paramValues = paramValues; CurrentPage = 0; this.paramsCount = paramValues.Length; double d=0; if (paramsCount > 0) { d = (double)paramsCount / pageSize; TotalPages = (int)Math.Ceiling(d); } else TotalPages = 0; } public bool GetNextPage() { if (CurrentPage < TotalPages) { CurrentPage++; return true; } return false; } public void GetCurrentParams(SqlParamsPagedResult<T> result) { int numberOfResults; if ((pageSize * CurrentPage <= paramsCount)) numberOfResults = pageSize; else numberOfResults = (paramsCount - (pageSize * (CurrentPage - 1))); result.ParamTags = new string[numberOfResults]; result.ParamValues = new T[numberOfResults]; result.Count = numberOfResults; int iterationStart = (CurrentPage-1) * pageSize; for (int i=0; i<numberOfResults; i++) { result.ParamTags[i] = TagPrefix + (i+iterationStart+1).ToString(); result.ParamValues[i] = paramValues[i + iterationStart]; } result.InClause = string.Join(",", result.ParamTags); } } public class UniqueProducts: IUniqueProducts { List<Product> list; private decimal _SumaIlosci; public decimal TotalCount { get { return _SumaIlosci; } set { _SumaIlosci = value; } } public void Add(Product product) { foreach (Product tw in list) { if ((tw.Symbol == product.Symbol) && (tw.Name==product.Name)) { TotalCount = TotalCount + product.Count; tw.Count += product.Count; if (tw.Price < product.Price) tw.Price = product.Price; return; } } list.Add(product); TotalCount = TotalCount + product.Count; } public int ProductCount { get { return list.Count; } } public List<Product> GetProducts() { return list; } public void Sort(IProductSorter sorter) { list = sorter.Sort(list); } public UniqueProducts() { list = new List<Product>(); } } UniqueProducts uniquePr; ProductToProductDbResultMapper mapper; ProductComparer prComparer; ProductSorter prSorter; SQLErrorMessage sqlErrorMsg; DataRecordToProductDbResultMapper mapperDbRecord; ProductDataStoreSelloSQLSrv sello; ProductDataStoreSubiektGTSQLSrv subiektGT; ProductOwnFieldMapper prOwMapper; Products ps; Product product1; #pragma warning disable 168 private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { uniquePr = new UniqueProducts(); mapper = new ProductToProductDbResultMapper(); //prComparer= new ProductComparer(); prSorter = new ProductSorter(anComparer); sqlErrorMsg = new SQLErrorMessage(); mapperDbRecord = new DataRecordToProductDbResultMapper(); sello = new ProductDataStoreSelloSQLSrv(sqlErrorMsg, mapperDbRecord); subiektGT = new ProductDataStoreSubiektGTSQLSrv(sqlErrorMsg, mapperDbRecord); prOwMapper = new ProductOwnFieldMapper(NazwaPolaWlasnegoZNazwaMagazynu, NazwaPolaWlasnegoZNazwaPolki, NazwaPolaWlasnegoZUwagami); ps = new Products(uniquePr, mapper,prSorter,prOwMapper); try { sello.AutentykacjaWindows = SelloAutentykacjaWindows; sello.BazaDanychSQL = SelloSQLNazwaBazyDanych; sello.HasloSQL = SelloSQLHaslo; sello.LoginSQL = SelloSQLLogin; sello.InstancjaSQL = SelloNazwaInstancjiSQLServer; sello.ImageOrderNumber=SelloNumerObrazka-1; bool test=SelloPokazujCene; } catch(Exception ex) { labelBlad.Visible=true; labelBlad.Text="Błędny format danych konfiguracyjnych Sello. Proszę sprawdzić i poprawić."; return; } ps.AddDataStore(sello); try { if (KorzystajZBazyDanychSubiektaGT) { subiektGT.AutentykacjaWindows = SubiektGTAutentykacjaWindows; subiektGT.BazaDanychSQL = SubiektGTSQLNazwaBazyDanych; subiektGT.HasloSQL = SubiektGTSQLHaslo; subiektGT.LoginSQL = SubiektGTSQLLogin; subiektGT.InstancjaSQL = SubiektGTNazwaInstancjiSQLServer; ps.AddDataStore(subiektGT); } } catch(Exception ex) { labelBlad.Visible=true; labelBlad.Text="Błędny format danych konfiguracyjnych SubiektaGT. Proszę sprawdzić i poprawić."; return; } } -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
U mnie tego elementu w ogóle nie było,dodałem, ale błąd CS0019 dalej jest Przykładowo błąd w linii 340 odnosi się do wklejonego fragmentu; -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
@Bartosz Rosa nie wiem czy coś pominąłem, czy źle napisałeś na kolanie -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
Niestety nie można zmienić tego zbiorczo, a drugie rozwiązanie jest zbyt skomplikowane -
Lista towarów do spakowania
Radek A odpowiedział Ks. Robak → na temat → Forum użytkowników - Sello - Pomocna dłoń
Niestety jest to płatne rozwiązanie.... -
Eksport danych CSV XML -> transformata -> linki do aukcji
Radek A odpowiedział Radek A → na temat → Forum użytkowników - Sello - Pomocna dłoń
Otworzyłem; C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\bcp Wkleiłem podstawiając w cudzysłowu nazwę mojej bazy, ale wyrzuciło błąd; SQLState = 08001, NativeError = 2 Error = [Microsoft][ODBC Driver 11 for SQL Server]Named Pipes Provider: Could no t open a connection to SQL Server [2]. SQLState = 08001, NativeError = 2 Error = [Microsoft][ODBC Driver 11 for SQL Server]A network-related or instance- specific error has occurred while establishing a connection to SQL Server. Serve r is not found or not accessible. Check if instance name is correct and if SQL S erver is configured to allow remote connections. For more information see SQL Se rver Books Online. SQLState = S1T00, NativeError = 0 Error = [Microsoft][ODBC Driver 11 for SQL Server]Login timeout expired
- Poprzednia
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- Dalej
-
Strona 2 z 14