
    lh-                         d Z ddlZddlZddlZddlZddlmZ ddlZ ej                  ej                  j                         dZ
dadad Zd Zd Zd	 Zd
 Zd Zd Zd Zedk(  r e        yy)zw
Direct API Client Lead Creator for Wright Choice HS
This script creates Client Lead DocTypes directly via ERPNext API
    N)datetimez&https://portal.wrightchoicehs.com:5750 c                      t        j                  d      at        j                  d      at        rt        sBt	        d       t	        d       t	        d       t	        d       t        j                  d       yy)	z/Load API credentials from environment variablesERPNEXT_API_KEYERPNEXT_API_SECRETzOERROR: ERPNEXT_API_KEY and ERPNEXT_API_SECRET environment variables must be setz'Please set these environment variables:z#export ERPNEXT_API_KEY=your_api_keyz)export ERPNEXT_API_SECRET=your_api_secret   N)osgetenvAPI_KEY
API_SECRETprintsysexit     1/var/www/wrightchoicehs/create_client_lead_api.pyload_api_credentialsr      s[     ii)*G/0J*_`78349: %r   c                  2    t          dt         } d|  dddS )z3Get authentication headers with proper token format:ztoken zapplication/json)AuthorizationAcceptzContent-Type)r   r   )tokens    r   get_auth_headersr   #   s,    iq%E!%)$* r   c                  v   	 t        j                  t         dt               dd      } | j                  dk(  r/| j                         }t        d|j                  dd              y	t        d
| j                   d| j                          y# t        $ r!}t        dt        |              Y d}~yd}~ww xY w)z$Test authentication with ERPNext APIz'/api/method/frappe.auth.get_logged_userF
   )headersverifytimeout   u&   ✅ Authentication successful - User: messageUnknownTu   ❌ Authentication failed:  - u   ❌ Authentication error: N)
requestsgetERPNEXT_URLr   status_codejsonr   text	Exceptionstr)responsedataes      r   test_authenticationr.   ,   s    <<mBC$&	
 3&==?D:488Iy;Y:Z[\/0D0D/ESXY *3q6(34s   A%B (%B 	B8B33B8c           	         	 t        j                  t         ddt        j                  d|j                         j                         i      it               d      }|j                  dk(  rF|j                         j                  dg       }|r$|d   j                  d	      }t        d
|        |S | j                         j                  dd      }|r|d   nd}t        |      dkD  r|d   nd}| |||j                         j                         ddgd}	|r	|ddg|	d<   t        j                  t         d|	t               d      }|j                  dv r?|j                         j                  di       j                  d	      }t        d|        |S t        d|j                   d|j                          y# t        $ r!}
t        dt        |
              Y d}
~
yd}
~
ww xY w)z*Create or update a Contact via ERPNext APIz/api/resource/Contactfilterszemail_ids.email_idFparamsr   r   r   r,   r   nameu   ℹ️ Found existing Contact:  r   r   )email_id
is_primary)	full_name
first_name	last_name	email_ids)phoneis_primary_mobile_no	phone_nosr'   r   r   r      u   ✅ Created new Contact: u   ❌ Failed to create Contact: r"   Nu   ❌ Error creating Contact: )r#   r$   r%   r'   dumpslowerstripr   r&   r   splitlenpostr(   r)   r*   )r7   emailr;   r+   existing_contactscontact_name
name_partsr8   r9   contact_datar-   s              r   create_contact_via_apirL   B   s   1<<m01tzz+?ATATAV*WXY$&	
 3& ( 3 3FB ? 0377?7~FG## __&,,S!4
&0Z]b
%(_q%8JqMb	 #$"',{{}':':'<ANO	
 38RS)T(UL%==m01$&	
 :-#==?..vr:>>vFL-l^<=283G3G2HHMM?[\ ,SVH56s%   B/F= 2C$F= %F= =	G'G""G'c                    	 t        j                  t         d|  t               d      }|j                  dk7  rt        d|  d|j                          y|j                         j                  di       }|j                  d	g       }|D ]>  }|j                  d
      dk(  s|j                  d      |k(  s-t        d|  d|         y d	|vrg |d	<   |d	   j                  d|d       t        j                  t         d|  |t               d      }|j                  dk(  rt        d|  d|        yt        d|j                   d|j                          y# t        $ r!}t        dt        |              Y d}~yd}~ww xY w)z'Link a Contact to a Client Lead via APIz/api/resource/Contact/F)r   r   r   u   ❌ Failed to get Contact z: Nr,   linkslink_doctypezClient Lead	link_nameu   ℹ️ Contact z already linked to Client Lead )rO   rP   r>   u   ✅ Linked Contact z to Client Lead u+   ❌ Failed to link Contact to Client Lead: r"   u*   ❌ Error linking Contact to Client Lead: )r#   r$   r%   r   r&   r   r'   appendputr(   r)   r*   )rI   client_lead_namer+   contact_docexisting_linkslinkr-   s          r   link_contact_to_client_leadrW   w   s   +E<<m1,@$&
 3&.|nBx?S?S>TUVmmo))&"5 %"5" 	Dxx'=8TXXk=RVf=f~5TUeTfgh	 +%#%K G##))%
 	 <<m1,@$&	
 3&'~5EFVEWXY?@T@T?UUXYaYfYfXghi E:3q6(CDDEs8   AE AE "E 7E 
A+E 6%E 	F%FFc                 X   	 t        j                  t         ddt        j                  d| i      it               d      }|j                  dk(  r.|j                         j                  dg       }t        |      dkD  S y# t        $ r!}t        d	t        |              Y d
}~yd
}~ww xY w)zECheck if a client lead already exists for this email and inquiry type/api/resource/Client Leadr0   r5   Fr1   r   r,   r   u.   ❌ Error checking for duplicate client lead: N)r#   r$   r%   r'   rA   r   r&   rE   r)   r   r*   )rG   inquiryr+   existing_leadsr-   s        r   check_duplicate_client_leadr\      s    <<m45tzz:u*=>?$&	
 3&%]]_00<N~&** >s1vhGHs   A;A? ?	B)B$$B)c                 \   	 | j                  d      st        d       y| j                  dd      j                         }| j                  dd      j                         }|st        d       y| j                  d      j                         j                         }| j                  dd      }t	        ||      rt        d	| d
|        yddddd}| d| |||d}| j                  d      r| j                  d      |d<   | j                  d      r| j                  d      |d<   ||v r||   |d<   | j                  d      r| j                  d      |d<   t        j                  t         d|t               d      }|j                  dv r|j                         j                  di       j                  d      }t        d|        | d| j                         }	t        |	|| j                  dd            }
|
rZd|
i}t        j                  t         d| |t               d      }|j                  dk(  rt        d | d!|
        t        |
|       |S t        d"|j                   d#|j                          y# t        $ r!}t        d$t!        |              Y d}~yd}~ww xY w)%z$Create a Client Lead via ERPNext APIrG   u   ❌ Email is requiredNr8   r   r9   u   ❌ First name is requiredrZ   u(   ⏭️ Duplicate client lead exists for z with inquiry zGeneral QuestionzClient ReferralzService InquiryOther)generalreferralserviceotherr4   )	lead_namer8   r9   r5   r;   r    inquiry_typesourcerY   Fr>   r?   r,   r3   u   ✅ Created Client Lead: rI   z/api/resource/Client Lead/r   u   ✅ Updated Client Lead z with Contact u"   ❌ Failed to create Client Lead: r"   u    ❌ Error creating Client Lead: )r$   r   rC   rB   r\   r#   rF   r%   r   r&   r'   rL   rR   rW   r(   r)   r*   )	lead_datar8   r9   rG   rZ   inquiry_mappingclient_lead_doc_datar+   rS   r7   rI   update_dataupdate_responser-   s                 r   create_client_lead_via_apirk      s   T}}W%)*]]<4::<
MM+r288:	./g&,,.446--	2. 'ug6<UG>RYQZ[\ *)(	
 '<q4$"	 
 ==!,5MM',B )==#.7mmI.F +o%3B73K 0=="-6]]8-D * ==m45%$&	
 :-'}}2262>BB6J-.>-?@A &,a	{399;I1)UIMMRY[]D^_L-|<"*,,"m#=>N=OP$,. 	# #..#545E4FnUaTbcd ,L:JK##6x7K7K6LCPXP]P]_` 0Q9:s1   J AJ -AJ 
FJ %J 	J+
J&&J+c                  R   t        t        j                        dk7  r+t        d       t        d       t        j                  d       	 t                t        d       t               s t        d       t        j                  d       t        j                  d   } t        j                  |       }t        d|j                  dd	              t        |      }|r$t        d
|        t        j                  d       yt        d       t        j                  d       y# t        j                  $ r6}t        dt        |              t        j                  d       Y d}~yd}~wt        $ r6}t        dt        |              t        j                  d       Y d}~yd}~ww xY w)z3Main function to create Client Lead from JSON input   z5Usage: python create_client_lead_api.py '<json_data>'zExample: python create_client_lead_api.py '{"first_name": "John", "last_name": "Doe", "email": "john@example.com", "phone": "555-1234", "inquiry": "general", "source": "website", "message": "Test message"}'r   u   🔐 Testing authentication...uM   ❌ Authentication failed. Please check your API credentials and ERPNext URL.u&   📥 Processing client lead data for: rG   unknownu!   ✅ SUCCESS: Created Client Lead r   u(   ❌ FAILED: Could not create Client Leadu   ❌ Invalid JSON data: Nu   ❌ Unexpected error: )rE   r   argvr   r   r   r.   r'   loadsr$   rk   JSONDecodeErrorr*   r)   )	json_datarf   rS   r-   s       r   mainrs     s@   
388}EF  {  	| 	./"$abHHQK HHQK	JJy)	6y}}Wi7X6YZ[ 6i@56F5GHIHHQK<=HHQK 'Ax01 &s1vh/0s+   	B5D  ? D   F&3,E$$F&0,F!!F&__main__)__doc__r#   r'   r   r	   r   urllib3disable_warnings
exceptionsInsecureRequestWarningr%   r   r   r   r   r.   rL   rW   r\   rk   rs   __name__r   r   r   <module>r{      s   
   
 	     ++BB C 7

,3j-E^&Vp&P zF r   