from gsheet_api import list_sheets, get_sheet_data, append_unique_row from mayo import MayoSession from dotenv import load_dotenv import os import re load_dotenv() # --- konfiguracja ---pip list DOC_NAME = os.getenv("DOC_NAME") MAYO_URL = os.getenv("MAYO_URL") LOGIN = os.getenv("MAYO_LOGIN") PASSWORD = os.getenv("MAYO_PASSWORD") RESULT_DOC = "gitary 2025" def normalize(text): if not text: return "" # usuwa spacje, niełamliwe spacje, nowe linie itp. return re.sub(r"\s+", "", text) def get_finish_type(row_data): """ Analizuje dane z listy wiersza, aby określić rodzaj wykończenia. Args: row_data: Lista zawierająca dane zamówienia, gdzie: - row_data[4] to 'color_top' - row_data[5] to 'color_body' Returns: Ciąg znaków: "GLOSS", "SATIN", "MIX", lub "MAT" na podstawie ostatnich liter w kodach kolorów. Zwraca None, jeśli żaden warunek nie jest spełniony. """ try: color_top = row_data["color_top"].strip() color_body = row_data["color_body"].strip() # Sprawdzenie, czy dane są dostępne if not color_top or not color_body: return None # Pobranie ostatniej litery z kodów kolorów top_last_char = color_top[-1] body_last_char = color_body[-1] # Warunki logiczne if top_last_char == 'G' and body_last_char == 'G': return "GLOSS" elif top_last_char == 'S' and body_last_char == 'S': return "SATIN" elif top_last_char in ('G', 'S') and body_last_char == 'M': return "MIX" elif top_last_char in ('M', 'R') and body_last_char in ('M', 'R'): return "MAT" except: return None # Zwraca None, jeśli żaden z powyższych warunków nie zostanie spełniony def main(): print("📄 Pobieram listę arkuszy...") sheets = list_sheets(DOC_NAME) for i, name in enumerate(sheets): print(f"{i+1}. {name}") # wybór arkusza (na razie manualny) sheet_name = input("\nWybierz arkusz do przetworzenia: ") print(f"📋 Pobieram dane z arkusza: {sheet_name}") rows = get_sheet_data(DOC_NAME, sheet_name) mayo = MayoSession(MAYO_URL, LOGIN, PASSWORD) mayo.login() counter = 1 # Zakładamy: kolumna B = link, kolumna C = nr zam. for row in rows[1:]: # pomijamy nagłówek link = row[1] nr_zam = row[2] if not link: continue print(f"\n🔗 Sprawdzam: {link}") info = mayo.get_order_info(link) order_number = info["order_number"] model = info["model"] print(f"Nr z arkusza: {nr_zam}") print(f"Nr ze strony: {info['order_number']}") print(f"Model: {info['model']}") if normalize(info["order_number"]) == normalize(nr_zam): print("✅ Numer się zgadza") else: print("⚠️ Numer NIE pasuje!") row_data = [ counter, link, nr_zam, model, get_finish_type(info), info["color_top"], info["color_body"], info["color_neck"], info["color_head"], info["finish"], ] print(f"top: {info['color_top']}, body: {info['color_body']}, neck: {info['color_neck']}, head: {info['color_head']}, finish: {info["finish"]}") print(f"WYKONCZENIE: {get_finish_type(info)}") append_unique_row(RESULT_DOC, sheet_name, row_data) counter += 1 if __name__ == "__main__": main()