LOCAL lcFileNamePd

*!*	***
*!*	DO app.prg
*!*	DO json\js.prg 
*!*	DO loader.prg
*!*	DO invoicer.prg
*!*	**DO initdb.prg WITH 1
*!*	***


oApp.lError = .F.

*STRTOFILE(oJs.cParam,'\temp\pedido.txt') 
*!*	***
*!*	TEXT TO oJs.cParam noshow
*!*	ID|IDCUSTOMER|DATE|HORA|IDSALESMAN|IDBODEGA|PVP|SUBTOTAL|SUBT0|SUBTX|TAX|TOTAL|IDUSER|TAXPERCENT|FORMAPAGO|C_LNG|C_LAT|NOTA|T_INI|T_FIN|RUC|NAME|COMERCIO|ADDRESS|PHONE|EMAIL|CITY|IDZONA|LLAVE~ID|IDCAB|IDITEM|LINE|PRICE|IVA|PVP|LIVA|QUANTITY|BULTOS|UC|UNIDADES|DESCUNIT|PRECIOBASE{1|0|2018-03-06|06:50:23|146|63|1|5.1960|0.0000|5.1960|0.6240|5.8200|84|12.0|2!5.82!2!123r5tt!65r4|-79.2120653|-4.009631||2018-03-06 06:47:03|2018-03-06 06:50:23|1102885314001|TORRES TANDAZO EDDY FRANCISCO|E-SISTEMAS|AV BRASIL 2886 Y HONDURAS|0982684021|MREDDYTORRES@GMAIL.COM|LOJA|41|201803060000100146~1|1|248|1|5.3571|1|1|1.0000|1.0|0.0|0.0|1.0|3.0000|5.3571
*!*	ENDTEXT
*!*	***

IF !oApp.android_reverse_cd(oJs.cParam)
	oApp.setRespuesta(.F.)	
	MESSAGEBOX('Error en definicion de pedido:' +CHR(13)+oJs.cParam, 63, 'GhostM')	
	RETURN 
ENDIF


cIdCust = PADL(0,12,'0')


SELECT pda_cur_cab


GO top
SCAN all
	cIdUser = oApp.fill_id(pda_cur_cab.iduser,8)
	cRuc = ALLTRIM(pda_cur_cab.ruc)
	cIdCust = oApp.fill_id(pda_cur_cab.idcustomer,12)
	cIdSalesman = oApp.fill_id(pda_cur_cab.idsalesman,8)
	
	cIdBasketPDa = STRTRAN(ALLTRIM(pda_cur_cab.date)+ALLTRIM(TRANSFORM(pda_cur_cab.id))+ALLTRIM(TRANSFORM(pda_cur_cab.idsalesman)),'-','')
	
	IF oApp.i_exist('LLAVE', 'pda_cur_cab')
		cIdBasketPDa = ALLTRIM(oApp.i_field('LLAVE', 'pda_cur_cab'))
	ENDIF
	
	
	TEXT TO cCmd TEXTMERGE noshow
		SELECT id FROM user where id="<<cIdUser>>" and venta_en_linea
	ENDTEXT 

	IF !EMPTY(cRuc)
		checkCli()
	ENDIF

*!*		***
*!*		venta()
*!*		return
*!*		***

		
	IF oApp.sqlexec(cCmd)>0
		
		IF !venta()
			EXIT
		ENDIF
	ELSE
		IF !pedido()
			EXIT
		ENDIF
		
	ENDIF
			
	SELECT pda_cur_cab
ENDSCAN


oApp.setRespuesta(!oApp.lError)


FUNCTION checkCli()

	IF oApp.sqlexec('SELECT id,idsalesman, idinstitucion,idzona,idDepart,diascredito FROM Customer where ruc=?cRuc')=0
				
		cCliente = oApp.i_field('NAME', 'pda_cur_cab')
		cComercio = oApp.i_field('COMERCIO', 'pda_cur_cab')
		cAddress = oApp.i_field('ADDRESS', 'pda_cur_cab')
		cPhone = oApp.i_field('PHONE', 'pda_cur_cab')
		cEmail= oApp.i_field('EMAIL', 'pda_cur_cab')
		cTipoRuc   	= IIF(LEN(cRuc)=13,'04','05')
		cTipoRuc   	= IIF(LEN(cRuc)<10,'06',cTipoRuc)
		cIdInst = "000000000001"
		cIdRuta = "000000001"
		cIdDep  = '00000001'
		cIdZona = oApp.i_field('IDZONA', 'pda_cur_cab')
		cIdZona = IIF(EMPTY(cIdZona),'000000001',cIdZona)
		cCity = oApp.i_field('CITY', 'pda_cur_cab')
		cCity= IIF(EMPTY(cCity),oApp.cbCity,cCity)
		
		c_IdCust = oApp.newid('customer',12,.t.)
		
		LOCAL cCmd
			
		TEXT TO cCmd NOSHOW TEXTMERGE 
			insert into customer (id,name,comercio,address,ruc,tiporuc,phone,idinstitucion,idsalesman,iddepart,idzona,pvp,state,applytax, city, email,ya) 
			values ("<<c_IdCust>>","<<cCliente>>","<<cComercio>>","<<cAddress>>","<<cRuc>>","<<cTipoRuc>>","<<cPhone>>","<<cIdInst>>","<<cIdSalesman>>","<<cIdDep>>",
			"<<cIdZona>>",1,1,1,"<<cCity>>","<<cEmail>>",0)
		ENDTEXT

		oApp.sqlexec(cCmd)

		cIdCust = c_IdCust 
				
	ELSE
		cIdCust = sqlresult.id
	ENDIF

ENDFUNC


FUNCTION pedido ()

	*WAIT WINDOW VARTYPE(cIdBasketpda)+'  '+cIdBasketpda

	IF oApp.sqlexec('SELECT id from basket where pocustomer="'+cIdBasketpda+'"')=0

		cId = oApp.newid('Basket', 14, .t.)
		
		*WAIT WINDOW cId
		
		oApp.t_clear()
		oApp.t_set('id', cId, 'C')	
		oApp.t_set('IdCustomer', 	cIdCust)
		
		oLoader.tipo		 = PADL(ALLTRIM(oApp.i_field('TIPO_VENTA', 'pda_cur_cab')),2,'0')
		
		IF !(oLoader.tipo $ '01.02.03')
			oLoader.tipo = '01'
		ENDIF

		oApp.t_set('Date', 			ALLTRIM(pda_cur_cab.date))
		oApp.t_set('Hora', 			ALLTRIM(pda_cur_cab.hora))
		oApp.t_set('IdSalesman', 	cIdSalesman)
		oApp.t_set('CodePrinter', 1, 'N')
		oApp.t_set('PVP', 			ALLTRIM(pda_cur_cab.pvp))
		oApp.t_set('SubTotal', 		ALLTRIM(oApp.fixd(pda_cur_cab.subtotal)))
		oApp.t_set('Subt0', 		ALLTRIM(oApp.fixd(pda_cur_cab.subt0)))
		oApp.t_set('SubtX', 		ALLTRIM(oApp.fixd(pda_cur_cab.subtX)))
		oApp.t_set('Tax', 			ALLTRIM(oApp.fixd(pda_cur_cab.tax)))
		oApp.t_set('Total', 		TRANSFORM(val(oApp.fixd(pda_cur_cab.total)),'9999999999.99'))
		oApp.t_set('IdUser', 		oApp.fill_id(pda_cur_cab.iduser,8))
		oApp.t_set('IdBodega', 		oApp.fill_id(pda_cur_cab.idbodega,8))
		
		oApp.t_set('TaxPercent', 	ALLTRIM(pda_cur_cab.TaxPercent))
		oApp.t_set('FormaPago', 12, 'N')
		oApp.t_set('DateOk', 		ALLTRIM(pda_cur_cab.date))
		oApp.t_set('Moneda', 		1, 'N')
		oApp.t_set('TipoCambio', 	1, 'N')
		oApp.t_set('IdCC', 			'0000000000', 'C')
		oApp.t_set('IdCP', 			'0000000000', 'C')
		
		oApp.t_set('latitud', 		TRANSFORM(pda_cur_cab.c_lat))
		oApp.t_set('longitud', 		TRANSFORM(pda_cur_cab.c_lng))
		
		*** VARIABLES CONTROLADAS

		IF oApp.i_exist('t_ini', 'pda_cur_cab')
			oApp.t_set('t_ini', ALLTRIM(pda_cur_cab.t_ini))
		ENDIF
		
		IF oApp.i_exist('t_fin', 'pda_cur_cab')
			oApp.t_set('t_fin', ALLTRIM(pda_cur_cab.t_fin))
		ENDIF

		oApp.t_set('noteprint', 	allt(TRANSFORM(pda_cur_cab.id))+".- "+SUBSTR(ALLTRIM(pda_cur_cab.nota),1,250), 'C')
		oApp.t_set('pocustomer', 	cIdBasketPDa , 'C')
		oApp.t_set('note', ALLTRIM("Pedido Nro. "+allt(TRANSFORM(pda_cur_cab.id))+" "+TTOC(DATETIME(),3)), 'C')
		
		DIMENSION a_t_fields[oApp.t_nfields,2]
		
		iLoop = 0
		DO WHILE !oApp.t_insert('Basket') and iLoop<1000
			iLoop = iLoop + 1 
			cId = oApp.newid('Basket', 14, .t.)
			a_t_fields[1,2] = cId
		ENDDO
		
		IF iLoop>=1000
			MESSAGEBOX(oApp.cerr,63,'Ghost',1)
			oApp.lError = .T.
			RETURN .F.
		ENDIF
		
		
		SELECT * FROM pda_cur_det WHERE idcab=pda_cur_cab.id INTO CURSOR curDet
		*BROWSE
		
		SELECT curDet
		GO top
		SCAN all
		
			cIdItem = oApp.fill_id(curDet.iditem,12)
			
			nbultos=val(curDet.bultos)
			nuc=val(curDet.uc)
			nunidades=val(curDet.unidades)
			
			nPvp = VAL(curDet.pvp)
			npreciobase = precioBase()

			nDescUnit = VAL(curDet.descunit)/100*VAL(curDet.price)

			oApp.t_clear()
			oApp.t_set('id', cId, 'C')	
			oApp.t_set('IdItem', 	cIdItem)
			oApp.t_set('Line', 		oApp.fill_id(curDet.line,4))
			oApp.t_set('Price', 	ALLTRIM(oApp.fixd(curDet.price)))
			oApp.t_set('descunit', 	nDescUnit,'N')
			oApp.t_set('pdescunit', ALLTRIM(oApp.fixd(curDet.descunit)))
			oApp.t_set('IVA', 		ALLTRIM(oApp.fixd(curDet.iva)))
			oApp.t_set('PVP', 		ALLTRIM(TRANSFORM(nPvp)))
			oApp.t_set('LIVA', 		ALLTRIM(oApp.fixd(curDet.liva)))
			oApp.t_set('Quantity', 	ALLTRIM(oApp.fixd(curDet.quantity)))
			
			oApp.t_set('PrecioBase', transform(npreciobase))
			oApp.t_set('bultos', 	transform(nbultos))
			oApp.t_set('uc', 		transform(nuc))
			oApp.t_set('unidades', 	transform(nunidades))
			
			oApp.t_insert('BasketDet')
			
			SELECT curDet

		ENDSCAN
	ENDIF

ENDFUNC


FUNCTION precioBase()

	npreciobase = 0
	IF oApp.sqlexec('select unidadescaja,price,priceb,pricec,priced,pricee from item where id='+cIdItem,'curItem')>0
		IF nuc<=0
			nbultos=0
			nuc=1
			nunidades=VAL(curDet.quantity)

			nuc = curItem.unidadescaja
			IF nuc<=0
				nUc = 1
			ENDIF
			
			nbultos = FLOOR(nunidades/nuc)
			nunidades = nunidades-nbultos*nuc
			
		ENDIF
	
		npreciobase = curItem.price
		
		IF oApp.ghost_MODIFICA_PRECIO>=2
			nPvp = IIF(nbultos>0,4,3)
		ENDIF		
		
		IF nPvp=2
			npreciobase = curItem.priceb
		ENDIF
		IF nPvp=3
			npreciobase = curItem.pricec
		ENDIF
		IF nPvp=4
			npreciobase = curItem.priced
		ENDIF
		IF nPvp=5
			npreciobase = curItem.pricee
		ENDIF
	ENDIF			 

	RETURN npreciobase
ENDFUNC


FUNCTION venta ()

	oApp.cInvoicerType='88'
	oLoader.noPed 		= cIdBasketPDa   &&noped
	
	_noPed = oLoader.noPed
	IF oApp.sqlexec('SELECT noped FROM loader_h where noped=?_noPed')>0
		RETURN .F.
	ENDIF
	
	oLoader.nofact		= oLoader.noPed
	oLoader.idcustomer  = cIdCust   &&idcustomer
	oLoader.idsalesman  = cIdSalesman   &&idsalesman
	oLoader.fecha 		= ALLTRIM(pda_cur_cab.date)
	oLoader.venc 		= ALLTRIM(pda_cur_cab.date)
	
	*MESSAGEBOX(oLoader.fecha)
	
	oLoader.hora 		= ALLTRIM(pda_cur_cab.hora)               &&hora
	oLoader.descuento 	= 0          &&descuento
	oLoader.pvp 		= ALLTRIM(oApp.fixd(pda_cur_cab.pvp))
	oLoader.pvpCab		= ALLTRIM(oApp.fixd(oLoader.pvp))
	
	_cIdUser = oApp.fill_id(pda_cur_cab.iduser,8)
	
	oLoader.serie 		 = ALLTRIM(oApp.i_field('SERIE', 'pda_cur_cab'))               &&serie
	oLoader.tipo		 = PADL(ALLTRIM(oApp.i_field('TIPO_VENTA', 'pda_cur_cab')),2,'0')
	
	IF !(oLoader.tipo $ '01.02.03')
		oLoader.tipo = '01'
	ENDIF
	
	
	oLoader.secuencial   = PADL(ALLTRIM(oApp.i_field('SECUENCIAL', 'pda_cur_cab')),9,'0')
	oLoader.clave_acceso = ALLTRIM(oApp.i_field('CLAVE_ACCESO', 'pda_cur_cab'))
	
	
	oLoader.numero 		= 0     &&numero
	
	
	oLoader.idcc 		= '0000000000' &&idcc
	oLoader.iduser 		= _cIdUser  &&iduser
	oLoader.idbodega 	= oApp.fill_id(pda_cur_cab.idbodega,8)  &&idbodega

	oLoader.nota 		= SUBSTR(ALLTRIM(pda_cur_cab.nota),1,250)
	oLoader.cliente 	= oApp.i_field('NAME', 'pda_cur_cab')
	oLoader.comercio 	= oApp.i_field('COMERCIO', 'pda_cur_cab')
	oLoader.address 	= oApp.i_field('ADDRESS', 'pda_cur_cab')
	oLoader.ruc 		= ALLTRIM(oApp.i_field('RUC', 'pda_cur_cab')) 
	oLoader.phone 		= oApp.i_field('PHONE', 'pda_cur_cab')
	
	cCity = oApp.i_field('CITY', 'pda_cur_cab')
	cCity = IIF(EMPTY(cCity),oApp.cbCity,cCity)
	
	oLoader.city 		= cCity 
	oLoader.email 		= oApp.i_field('EMAIL', 'pda_cur_cab')
	
	oLoader.accion 		= 1 && archivado
	oLoader.formapago 	= '12'  && pondarmat
	*oLoader.formapago 	= '11'  && FERNANDO VALLEJO
	

	oLoader.efectivo 	= 0
	oLoader.numdoc 		= ''
	oLoader.idbank 		= ''
	oLoader.cuenta 		= ''
	oLoader.idtipoventa = '00000001'
	
	***
	
	DIMENSION aFormaPago[1]
	
	IF oApp.explode(ALLTRIM(pda_cur_cab.formapago),@aFormaPago,'!')>0
		&& 2!5.82!2!123r5tt!65r4
		
	
		&&IDFORMAPAGO!MONTO!IDBANCO!NUMERODOCUMENTO!NUMEROCUENTA
		
		IF aFormaPago[1]="1" &&CH
			oLoader.formapago= '09'
		ENDIF
		

		IF aFormaPago[1]="2" &&TC
			oLoader.formapago= '08'
		ENDIF
		
		
		oLoader.efectivo=0  &&VAL(aFormaPago[2])
		oLoader.idbank=PADL(aFormaPago[3],8,'0')
		oLoader.numdoc=aFormaPago[4]
		oLoader.cuenta=aFormaPago[5]
		
		*MESSAGEBOX(oLoader.formapago)
		*RETURN .F.
	ENDIF
	oLoader.lcontado	= IIF(oLoader.formapago='12',1,0)
	***
	*return
	***
	oLoader.saveCab()
	
	SELECT * FROM pda_cur_det WHERE idcab=pda_cur_cab.id INTO CURSOR curDet
	
	SELECT curDet
	GO top
	SCAN all
	
		cIdItem = oApp.fill_id(curDet.iditem,12)
		
		nPrice = VAL(oApp.fixd(curDet.price))
		nDesc  = VAL(oApp.fixd(curDet.descunit))
		
		oLoader.IdItem = cIdItem
		oLoader.item		= ''
		oLoader.codigo		= ''		
		oLoader.cantidad 	= ALLTRIM(oApp.fixd(curDet.quantity))
		oLoader.precio   	= ALLTRIM(oApp.fixd(curDet.price))
		*oLoader.descuento   = ALLTRIM(TRANSFORM(VAL(oApp.fixd(curDet.descunit))/VAL(oApp.fixd(curDet.price))*100))
		*oLoader.descuento   = ALLTRIM(TRANSFORM(VAL(oApp.fixd(curDet.descunit))/VAL(oApp.fixd(curDet.price))*100))
		oLoader.descuento   = ALLTRIM(TRANSFORM(VAL(oApp.fixd(curDet.descunit))))
		
		IF nPrice<=nDesc
			*oLoader.descuento  = '100.00'
		ENDIF
		
		
		oLoader.pvp			= ALLTRIM(oApp.fixd(curDet.pvp))
		oLoader.liva		= ALLTRIM(oApp.fixd(curDet.liva))
		
		
		oLoader.saveDet()

		SELECT curDet

	ENDSCAN
***
*return
***
	
	oInvoicer.oForm = ''
	oInvoicer.run(oLoader.noPed)

ENDFUNC
