1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662 |
- #INCLUDE "PROTHEUS.CH"
- #INCLUDE "TBICONN.CH"
- #INCLUDE "COLORS.CH"
- #INCLUDE "RPTDEF.CH"
- #INCLUDE "FWPrintSetup.ch"
- #DEFINE IMP_SPOOL 2
- #DEFINE VBOX 080
- #DEFINE VSPACE 008
- #DEFINE HSPACE 010
- #DEFINE SAYVSPACE 008
- #DEFINE SAYHSPACE 008
- #DEFINE HMARGEM 030
- #DEFINE VMARGEM 030
- #DEFINE MAXITEM 022 // M嫞imo de produtos para a primeira p墔ina
- #DEFINE MAXITEMP2 049 // M嫞imo de produtos para a pagina 2 em diante
- #DEFINE MAXITEMP2F 069 // M嫞imo de produtos para a p墔ina 2 em diante quando a p墔ina n緌 possui informa踥es complementares
- #DEFINE MAXITEMP3 025 // M嫞imo de produtos para a pagina 2 em diante (caso utilize a op誽o de impressao em verso) - Tratamento implementado para atender a legislacao que determina que a segunda pagina de ocupar 50%.
- #DEFINE MAXITEMC 035 // M嫞ima de caracteres por linha de produtos/servi蔞s
- #DEFINE MAXMENLIN 080 // M嫞imo de caracteres por linha de dados adicionais
- #DEFINE MAXMSG 013 // M嫞imo de dados adicionais por p墔ina
- #DEFINE MAXVALORC 009 // M嫞imo de caracteres por linha de valores num廨icos
- #DEFINE MAXCODPRD 050 // M嫞imo de caracteres do codigo de produtos/servicos conforme o tamanho do quadro "Cod. prod"
- /*/
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控矬闡闡闡闡鐃闡闡闡闡闡薩闡闡闡薩闡闡闡闡闡闡闡闡闡闡闡薩闡闡鐃闡闡闡闡闡膨�
- 控袈rograma 袈rtNfeSef � Autor � Eduardo Riera � Data �16.11.2006陰�
- 控藥闡闡闡闡霰闡闡闡闡闡謐闡闡闡謐闡闡闡闡闡闡闡闡闡闡闡謐闡闡鐘闡闡闡闡闡敢�
- 控蛇escri�o 袒dmake de exemplo para impress緌 da DANFE no formato Retrato陰�
- 控� � 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袒etorno 術enhum 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袈arametros術enhum 陰�
- 控� � 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡鐃闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� DATA � Programador 蛉anutencao efetuada 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� � � 陰�
- 控斂闡闡闡闡鐘闡闡闡闡闡闡闡鐘闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡棱�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔�
- /*/
- User Function PrtNfeSef(cIdEnt, cVal1 , cVal2 , oDanfe,;
- oSetup, cFilePrint , lIsLoja , nTipo )
- Local aArea := GetArea()
- Local lExistNfe := .F.
- Local lPergunte := .T.
- Local lRet := .T.
- local lVerPerg := .T.
- local lJob := .F.
- local cProg := iif(existBlock("DANFEProc"),"U_DANFEProc","DANFEProc")
- Default lIsLoja := .F. //indica se foi chamado de alguma rotina do SIGALOJA
- Default nTipo := 0
- Private nConsNeg := 0.4 // Constante para concertar o c嫮culo retornado pelo GetTextWidth para fontes em negrito.
- Private nConsTex := 0.5 // Constante para concertar o c嫮culo retornado pelo GetTextWidth.
- private oRetNF
- Private lPortalRep := isInCallStack("u_danfepdf")//Alterado Lucilene SMSTI - Envio Portal SMS. 25.11.23
- If nTipo <> 1
- lJob := (oDanfe:lInJob .or. oSetup == nil)
- oDanfe:SetResolution(78) //Tamanho estipulado para a Danfe
- oDanfe:SetPortrait()
- oDanfe:SetPaperSize(DMPAPER_A4)
- oDanfe:SetMargin(60,60,60,60)
- If !lPortalRep //Alterado Lucilene SMSTI - Portal SMS. 25.11.23
- oDanfe:lServer := if( lJob , .T., oSetup:GetProperty(PD_DESTINATION)==AMB_SERVER )
- Endif
- // ----------------------------------------------
- // Define saida de impress緌
- // ----------------------------------------------
- If !lPortalRep //Alterado Lucilene SMSTI - Portal SMS. 25.11.23
- If lJob .or. oSetup:GetProperty(PD_PRINTTYPE) == IMP_PDF
- oDanfe:nDevice := IMP_PDF
- // ----------------------------------------------
- // Define para salvar o PDF
- // ----------------------------------------------
- oDanfe:cPathPDF := if ( lJob , SuperGetMV('MV_RELT',,"\SPOOL\") , oSetup:aOptions[PD_VALUETYPE] )
- elseIf oSetup:GetProperty(PD_PRINTTYPE) == IMP_SPOOL
- oDanfe:nDevice := IMP_SPOOL
- // ----------------------------------------------
- // Salva impressora selecionada
- // ----------------------------------------------
- fwWriteProfString(GetPrinterSession(),"DEFAULT", oSetup:aOptions[PD_VALUETYPE], .T.)
- oDanfe:cPrinter := oSetup:aOptions[PD_VALUETYPE]
- Endif
- Endif
- If lIsLoja
- MV_PAR01 := SF2->F2_DOC
- MV_PAR02 := SF2->F2_DOC
- MV_PAR03 := SF2->F2_SERIE
- MV_PAR04 := 2 //[Operacao] NF de Saida
- MV_PAR05 := 1 //[Frente e Verso] Sim
- MV_PAR06 := 2 //[DANFE simplificado] Nao
- Else
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- //� Agroindustria� �� ���� ���� �稭
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- If FindFunction("OGXUtlOrig") //Encontra a fun誽o
- If OGXUtlOrig() // Retorna se tem integra誽o com Agro/origina誽o modulo 67
- If FindFunction("AGRXPERG")
- lVerPerg := AGRXPERG()
- EndIf
- EndIf
- Endif
- If lVerPerg .and. !lPortalRep //Alterado Lucilene SMSTI - Portal SMS. 25.11.23
- if !lJob
- lPergunte := Pergunte("NFSIGW",.T.)
- else
- lPergunte := .T.
- Pergunte("NFSIGW",.F.)
- endif
- EndIf
- EndIf
- If lPergunte
- if lJob .or. lPortalRep //Adicionado Lucilene SMSTI - Portal SMS - 25.11.23
- &cProg.(@oDanfe, , cIDEnt, Nil, Nil, @lExistNFe, lIsLoja )
- else
- RPTStatus( {|lEnd| &cProg.(@oDanfe, @lEnd, cIDEnt, Nil, Nil, @lExistNFe, lIsLoja )}, "Imprimindo DANFE..." )
- endif
- EndIf
- If lExistNFe
- oDanfe:Preview()//Visualiza antes de imprimir
- Else
- if !lIsLoja .and. !lJob
- Aviso("DANFE","Nenhuma NF-e a ser impressa nos parametros utilizados.",{"OK"},3)
- EndIf
- EndIf
- ElseIf nTipo == 1
- MV_PAR01 := SF2->F2_DOC
- MV_PAR02 := SF2->F2_DOC
- MV_PAR03 := SF2->F2_SERIE
- MV_PAR04 := 2 //[Operacao] NF de Saida
- MV_PAR05 := 1 //[Frente e Verso] Sim
- MV_PAR06 := 1 //[DANFE simplificado] Sim
- If lPergunte
- if lJob
- &cProg.(@oDanfe, , cIDEnt, Nil, Nil, @lExistNFe, lIsLoja, nTipo )
- else
- RPTStatus( {|lEnd| &cProg.(@oDanfe, @lEnd, cIDEnt, Nil, Nil, @lExistNFe, lIsLoja, nTipo)}, "Imprimindo DANFE..." )
- endif
- EndIf
- EndIf
- //Se SIGALOJA, o objeto oDANFE � destruido onde foi instanciado e retorna se houve impressao do DANFE
- If lIsLoja
- lRet := lExistNFe
- Else
- FreeObj(oDANFE)
- oDANFE := Nil
- EndIf
- RestArea(aArea)
- Return lRet
- /*/
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控矬闡闡闡闡鐃闡闡闡闡闡薩闡闡闡薩闡闡闡闡闡闡闡闡闡闡闡薩闡闡鐃闡闡闡闡闡膨�
- 控袈rograma 蛇ANFEProc � Autor � Eduardo Riera � Data �16.11.2006陰�
- 控藥闡闡闡闡霰闡闡闡闡闡謐闡闡闡謐闡闡闡闡闡闡闡闡闡闡闡謐闡闡鐘闡闡闡闡闡敢�
- 控蛇escri�o 袒dmake de exemplo para impress緌 da DANFE no formato Retrato陰�
- 控� � 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袒etorno 術enhum 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袈arametros蛀xpO1: Objeto grafico de impressao (OPC) 陰�
- 控� � 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡鐃闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� DATA � Programador 蛉anutencao efetuada 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� � � 陰�
- 控斂闡闡闡闡鐘闡闡闡闡闡闡闡鐘闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡棱�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔�
- /*/
- User Function DANFEProc( oDanfe , lEnd , cIdEnt , cVal1,;
- cVal2 , lExistNfe , lIsLoja , nTipo)
- Local aArea := GetArea()
- Local aAreaSF3 := {}
- Local aNotas := {}
- Local aXML := {}
- Local cNaoAut := ""
- Local cAliasSF3 := "SF3"
- Local cWhere := ""
- Local cAviso := ""
- Local cCodRetNFE := ""
- Local cCodRetSF3 := ""
- Local cMsgSF3 := ""
- Local cErro := ""
- Local cAutoriza := ""
- Local cModalidade:= ""
- Local cChaveSFT := ""
- Local cAliasSFT := "SFT"
- Local cCondicao := ""
- Local cIndex := ""
- Local cChave := ""
- Local lQuery := .F.
- Local nX := 0
- Local nI := 0
- Local oNfe
- Local nLenNotas
- Local lImpDir := GetNewPar("MV_IMPDIR",.F.)
- Local nLenarray := 0
- Local nCursor := 0
- Local lBreak := .F.
- Local aGrvSF3 := {}
- Local lImpSimp := .F.
- Local lUsaColab := UsaColaboracao("1")
- Local lMVGfe := GetNewPar( "MV_INTGFE", .F. ) // Se tem integra誽o com o GFE
- Local lSdoc := TamSx3("F3_SERIE")[1] == 14
- Local cSerie := ""
- Local cSerId := ""
- Local cFrom := ""
- Local cxFilial := ""
- Local cCampos := ""
- Local lFirst := .T.
- local lChave := .F.
- Local cChavSF3 := ""
- Local nTotalReg := 0
- Default lEnd := .F.
- Default lIsLoja := .F.
- Default nTipo := 0
- public nMaxItem := MAXITEM
- MV_PAR01 := AllTrim(MV_PAR01)
- lImpSimp := ( !Empty( MV_PAR06 ) .and. MV_PAR06 == 1 )
- If !lImpDir .or. MV_PAR04 == 0 /* Caso impress緌 de DANFE seja realizada via AutoDistMail */
- dbSelectArea("SF3")
- dbSetOrder(5)
- #IFDEF TOP
- If MV_PAR04==1
- If lSdoc
- cCampos += ", SF3.F3_SDOC"
- cSerie := Padr(MV_PAR03,TamSx3("F3_SDOC")[1])
- cWhere := "%SubString(SF3.F3_CFO,1,1) < '5' AND SF3.F3_FORMUL='S' AND SF3.F3_SDOC = '"+ cSerie + "' AND SF3.F3_ESPECIE IN ('SPED','NFCE') "
- Else
- cSerie := Padr(MV_PAR03,TamSx3("F3_SERIE")[1])
- cWhere := "%SubString(SF3.F3_CFO,1,1) < '5' AND SF3.F3_FORMUL='S' AND SF3.F3_SERIE = '"+ cSerie + "' AND SF3.F3_ESPECIE IN ('SPED','NFCE') "
- Endif
- ElseIf MV_PAR04==2
- If lSdoc
- cCampos += ", SF3.F3_SDOC"
- cSerie := Padr(MV_PAR03,TamSx3("F3_SDOC")[1])
- cWhere := "%SubString(SF3.F3_CFO,1,1) >= '5' AND SF3.F3_SDOC = '"+ cSerie + "' AND SF3.F3_ESPECIE IN ('SPED','NFCE') "
- Else
- cSerie := Padr(MV_PAR03,TamSx3("F3_SERIE")[1])
- cWhere := "%SubString(SF3.F3_CFO,1,1) >= '5' AND SF3.F3_SERIE = '"+ cSerie + "' AND SF3.F3_ESPECIE IN ('SPED','NFCE') "
- Endif
- Else
- If lSdoc
- cCampos += ", SF3.F3_SDOC"
- cSerie := Padr(MV_PAR03,TamSx3("F3_SDOC")[1])
- cWhere := "%SF3.F3_SDOC = '"+ cSerie + "' AND SF3.F3_ESPECIE IN ('SPED','NFCE') "
- Else
- cSerie := Padr(MV_PAR03,TamSx3("F3_SERIE")[1])
- cWhere := "%SF3.F3_SERIE = '"+ cSerie + "' AND SF3.F3_ESPECIE IN ('SPED','NFCE') "
- Endif
- EndIf
-
- If !Empty(MV_PAR07) .Or. !Empty(MV_PAR08)
- cWhere += " AND (SF3.F3_EMISSAO >= '"+ SubStr(DTOS(MV_PAR07),1,4) + SubStr(DTOS(MV_PAR07),5,2) + SubStr(DTOS(MV_PAR07),7,2) + "' AND SF3.F3_EMISSAO <= '"+ SubStr(DTOS(MV_PAR08),1,4) + SubStr(DTOS(MV_PAR08),5,2) + SubStr(DTOS(MV_PAR08),7,2) + "')"
- EndIF
- cWhere += "%"
- cAliasSF3 := GetNextAlias()
- lQuery := .T.
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- //彪ampos que serao adicionados a query somente se existirem na base�
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- If Empty(cCampos)
- cCampos := "%%"
- Else
- cCampos := "% " + cCampos + " %"
- Endif
- BeginSql Alias cAliasSF3
- COLUMN F3_ENTRADA AS DATE
- COLUMN F3_DTCANC AS DATE
- SELECT F3_FILIAL,F3_ENTRADA,F3_NFELETR,F3_CFO,F3_FORMUL,F3_NFISCAL,F3_SERIE,F3_CLIEFOR,F3_LOJA,F3_ESPECIE,F3_DTCANC
- %Exp:cCampos%
- FROM %Table:SF3% SF3
- WHERE
- SF3.F3_FILIAL = %xFilial:SF3% AND
- SF3.F3_SERIE = %Exp:MV_PAR03% AND
- SF3.F3_NFISCAL >= %Exp:MV_PAR01% AND
- SF3.F3_NFISCAL <= %Exp:MV_PAR02% AND
- %Exp:cWhere% AND
- SF3.F3_DTCANC = %Exp:Space(8)% AND
- SF3.%notdel%
- ORDER BY F3_NFISCAL
- EndSql
- #ELSE
- cIndex := CriaTrab(NIL, .F.)
- cChave := IndexKey(6)
- cCondicao := 'F3_FILIAL == "' + xFilial("SF3") + '" .And. '
- cCondicao += 'SF3->F3_SERIE =="'+ MV_PAR03+'" .And. '
- cCondicao += 'SF3->F3_NFISCAL >="'+ MV_PAR01+'" .And. '
- cCondicao += 'SF3->F3_NFISCAL <="'+ MV_PAR02+'" .And. '
- cCondicao += 'SF3->F3_ESPECIE IN ("SPED","NFCE") .And. '
- cCondicao += 'Empty(SF3->F3_DTCANC)'
- IndRegua(cAliasSF3, cIndex, cChave, , cCondicao)
- nIndex := RetIndex(cAliasSF3)
- DBSetIndex(cIndex + OrdBagExt())
- DBSetOrder(nIndex + 1)
- DBGoTop()
- #ENDIF
- If MV_PAR04==1
- cWhere := "SubStr(F3_CFO,1,1) < '5' .AND. F3_FORMUL=='S'"
- Elseif MV_PAR04==2
- cWhere := "SubStr(F3_CFO,1,1) >= '5'"
- Else
- cWhere := ".T."
- EndIf
- If lSdoc
- cSerId := (cAliasSF3)->F3_SDOC
- Else
- cSerId := (cAliasSF3)->F3_SERIE
- EndIf
- While !Eof() .And. xFilial("SF3") == (cAliasSF3)->F3_FILIAL .And.;
- cSerId == MV_PAR03 .And.;
- (cAliasSF3)->F3_NFISCAL >= MV_PAR01 .And.;
- (cAliasSF3)->F3_NFISCAL <= MV_PAR02
- dbSelectArea(cAliasSF3)
- If Empty((cAliasSF3)->F3_DTCANC) .And. &cWhere //.And. AModNot((cAliasSF3)->F3_ESPECIE)=="55"
- If (SubStr((cAliasSF3)->F3_CFO,1,1)>="5" .Or. (cAliasSF3)->F3_FORMUL=="S") .And. aScan(aNotas,{|x| x[4]+x[5]+x[6]+x[7]==(cAliasSF3)->F3_SERIE+(cAliasSF3)->F3_NFISCAL+(cAliasSF3)->F3_CLIEFOR+(cAliasSF3)->F3_LOJA})==0
- aadd(aNotas,{})
- aadd(Atail(aNotas),.F.)
- aadd(Atail(aNotas),IIF((cAliasSF3)->F3_CFO<"5","E","S"))
- aadd(Atail(aNotas),(cAliasSF3)->F3_ENTRADA)
- aadd(Atail(aNotas),(cAliasSF3)->F3_SERIE)
- aadd(Atail(aNotas),(cAliasSF3)->F3_NFISCAL)
- aadd(Atail(aNotas),(cAliasSF3)->F3_CLIEFOR)
- aadd(Atail(aNotas),(cAliasSF3)->F3_LOJA)
- EndIf
- EndIf
- dbSelectArea(cAliasSF3)
- dbSkip()
- If lSdoc
- cSerId := (cAliasSF3)->F3_SDOC
- Else
- cSerId := (cAliasSF3)->F3_SERIE
- EndIf
- If lEnd
- Exit
- EndIf
- If (cAliasSF3)->(Eof())
- aAreaSF3 := (cAliasSF3)->(GetArea())
- if lUsaColab
- //Tratamento do TOTVS Colabora誽o
- aXml := GetXMLColab(aNotas,@cModalidade,lUsaColab)
- else
- aXml := GetXML(cIdEnt,aNotas,@cModalidade, if( valtype(oDanfe) == "O", oDanfe:lInJob, nil ) )
- endif
- nLenNotas := Len(aNotas)
- For nX := 1 To nLenNotas
- If !Empty(aXML[nX][2])
- If !Empty(aXml[nX])
- cAutoriza := aXML[nX][1]
- cCodAutDPEC := aXML[nX][5]
- cCodRetNFE := aXML[nX][9]
- cCodRetSF3 := iif ( Empty (cCodAutDPEC),cCodRetNFE,cCodAutDPEC )
- cMsgSF3 := iif ( aXML[nX][10]<> Nil ,aXML[nX][10],"")
- Else
- cAutoriza := ""
- cCodAutDPEC := ""
- cCodRetNFE := ""
- cCodRetSF3 := ""
- cMsgSF3 := ""
- EndIf
- If (!Empty(cAutoriza) .Or. !Empty(cCodAutDPEC) .Or. Alltrim(aXML[nX][8]) $ "2,5") .And. !cCodRetNFE $ RetCodDene()
- If aNotas[nX][02]=="E"
- DBClearFilter()
- dbSelectArea("SF1")
- SF1->(dbSetOrder(1)) // F1_FILIAL+F1_DOC+F1_SERIE+F1_FORNECE+F1_LOJA+F1_TIPO
- If SF1->(DbSeek(xFilial("SF1")+aNotas[nX][05]+aNotas[nX][04]+aNotas[nX][06]+aNotas[nX][07])) .And. SF1->(FieldPos("F1_FIMP")) <> 0 .And. Alltrim(aXML[nX][8])$"1,3,4,6,7" .or. ( Alltrim(aXML[nX][8]) $ "2,5" .And. !Empty(cAutoriza) )
- If SF1->F1_FORMUL == "S"
- if RecLock("SF1")
- If !SF1->F1_FIMP$"D"
- SF1->F1_FIMP := "S"
- EndIf
- If SF1->(FieldPos("F1_CHVNFE")) > 0
- SF1->F1_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- EndIf
- If SF1->(FieldPos("F1_HAUTNFE")) > 0 .and. SF1->(FieldPos("F1_DAUTNFE")) > 0 //grava a data e hora de autoriza誽o da NFe
- SF1->F1_HAUTNFE := IIF(!Empty(aXML[nX][6]),SUBSTR(aXML[nX][6],1,5),"")
- SF1->F1_DAUTNFE := IIF(!Empty(aXML[nX][7]),aXML[nX][7],SToD(" / / "))
- EndIf
- SF1->(MsUnlock())
- endif
- // Atualiza誽o dos campos da Tabela GFE
- if FindFunction("GFECHVNFE") .and. lMVGfe // Integra誽o com o GFE
- if SF1->F1_TIPO $ "D|B" // Documento com tipo de devolu誽o ou "Utilizar Fornecedor"
- dbSelectArea("SA1")
- dbSetOrder(1)
- If SA1->(DbSeek(xFilial("SA1")+ SF1->F1_FORNECE + SF1->F1_LOJA))
- GFECHVNFE(xFilial("SF1"),SF1->F1_SERIE,SF1->F1_DOC,SF1->F1_TIPO,SA1->A1_CGC,SA1->A1_COD,SA1->A1_LOJA,SF1->F1_CHVNFE,SF1->F1_FIMP, "E")
- Endif
- else
- dbSelectArea("SA2")
- dbSetOrder(1)
- If SA2->(MsSeek(xFilial("SA2")+ SF1->F1_FORNECE + SF1->F1_LOJA,.T.))
- GFECHVNFE(xFilial("SF1"),SF1->F1_SERIE,SF1->F1_DOC,SF1->F1_TIPO,SA2->A2_CGC,SA2->A2_COD,SA2->A2_LOJA,SF1->F1_CHVNFE,SF1->F1_FIMP, "E")
- endif
- endif
- endif
- endif
- EndIf
- Else
- dbSelectArea("SF2")
- dbSetOrder(1)
- If MsSeek(xFilial("SF2")+aNotas[nX][05]+aNotas[nX][04]+aNotas[nX][06]+aNotas[nX][07]) .And. Alltrim(aXML[nX][8])$"1,3,4,6,7" .Or. ( Alltrim(aXML[nX][8]) $ "2,5" .And. !Empty(cAutoriza) )
- RecLock("SF2")
- If !SF2->F2_FIMP$"D"
- SF2->F2_FIMP := "S"
- EndIf
- If SF2->(FieldPos("F2_CHVNFE")) > 0
- SF2->F2_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- EndIf
- If SF2->(FieldPos("F2_HAUTNFE")) > 0 .and. SF2->(FieldPos("F2_DAUTNFE")) > 0 //grava a data e hota de autoriza誽o da NFe
- SF2->F2_HAUTNFE := IIF(!Empty(aXML[nX][6]),SUBSTR(aXML[nX][6],1,5),"")
- SF2->F2_DAUTNFE := IIF(!Empty(aXML[nX][7]),aXML[nX][7],SToD(" / / "))
- EndIf
- MsUnlock()
- // Grava quando a nota for Transferencia entre filiais
- IF SF2->(FieldPos("F2_FILDEST"))> 0 .And. SF2->(FieldPos("F2_FORDES"))> 0 .And.SF2->(FieldPos("F2_LOJADES"))> 0 .And.SF2->(FieldPos("F2_FORMDES"))> 0 .And. !EMPTY (SF2->F2_FORDES)
- SF1->(dbSetOrder(1))
- If SF1->(MsSeek(SF2->F2_FILDEST+SF2->F2_DOC+SF2->f2_SERIE+SF2->F2_FORDES+SF2->F2_LOJADES+SF2->F2_FORMDES))
- If EMPTY(SF1->F1_CHVNFE)
- RecLock("SF1",.F.)
- SF1->F1_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnlock()
- EndIf
- Endif
- EndiF
- ElseIf MsSeek(xFilial("SF2")+aNotas[nX][05]+aNotas[nX][04]+aNotas[nX][06]+aNotas[nX][07]) .And. Alltrim(aXML[nX][8])$"1,3,4,6" .Or. ( Alltrim(aXML[nX][8]) $ "2,5" .And. cModalidade == "7" ) // Contingencia FSDA
- RecLock("SF2")
- SF2->F2_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnlock()
- EndIf
- // Atualiza誽o dos campos da Tabela GFE
- if FindFunction("GFECHVNFE") .and. lMVGfe // Integra誽o com o GFE
- if SF2->F2_TIPO $ "D|B" // Documento com tipo de devolu誽o ou "Utilizar Fornecedor"
- dbSelectArea("SA2")
- dbSetOrder(1)
- If SA2->(MsSeek(xFilial("SA2")+ SF2->F2_CLIENTE + SF2->F2_LOJA,.T.))
- GFECHVNFE(xFilial("SF2"),SF2->F2_SERIE,SF2->F2_DOC,SF2->F2_TIPO,SA2->A2_CGC,SA2->A2_COD,SA2->A2_LOJA,SF2->F2_CHVNFE,SF2->F2_FIMP,"S")
- EndIf
- else
- dbSelectArea("SA1")
- dbSetOrder(1)
- If SA1->(MsSeek(xFilial("SA1")+ SF2->F2_CLIENTE + SF2->F2_LOJA,.T.))
- GFECHVNFE(xFilial("SF2"),SF2->F2_SERIE,SF2->F2_DOC,SF2->F2_TIPO,SA1->A1_CGC,SA1->A1_COD,SA1->A1_LOJA,SF2->F2_CHVNFE,SF2->F2_FIMP,"S")
- Endif
- endif
- endif
- If ExistFunc("STFMMd5NS") //Fun誽o do Controle de Lojas - Legisla誽o PAF-ECF
- STFMMd5NS()
- EndIf
- EndIf
- dbSelectArea("SFT")
- dbSetOrder(1)
- If SFT->(FieldPos("FT_CHVNFE"))>0
- cChaveSFT := (xFilial("SFT")+aNotas[nX][02]+aNotas[nX][04]+aNotas[nX][05]+aNotas[nX][06]+aNotas[nX][07])
- If MsSeek(cChaveSFT)
- Do While !(cAliasSFT)->(Eof ()) .And.;
- cChaveSFT==(cAliasSFT)->FT_FILIAL+(cAliasSFT)->FT_TIPOMOV+(cAliasSFT)->FT_SERIE+(cAliasSFT)->FT_NFISCAL+(cAliasSFT)->FT_CLIEFOR+(cAliasSFT)->FT_LOJA
- If (cAliasSFT)->FT_TIPOMOV $"S" .Or. ((cAliasSFT)->FT_TIPOMOV $"E" .And. (cAliasSFT)->FT_FORMUL=='S')
- RecLock("SFT")
- SFT->FT_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnLock()
- //Array criado para gravar o SF3 no final, pois a tabela SF3 pode estah em processamento quando se trata de DBF ou AS/400.
- If aScan(aGrvSF3,{|aX|aX[1]+aX[2]+aX[3]+aX[4]+aX[5]==(cAliasSFT)->(FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA+FT_IDENTF3)})==0
- aAdd(aGrvSF3, {(cAliasSFT)->FT_SERIE,(cAliasSFT)->FT_NFISCAL,(cAliasSFT)->FT_CLIEFOR,(cAliasSFT)->FT_LOJA,(cAliasSFT)->FT_IDENTF3,(cAliasSFT)->FT_CHVNFE,cAutoriza,cCodRetSF3,cMsgSF3})
- EndIf
- EndIf
- DbSkip()
- EndDo
- EndIf
- EndIf
- // Grava quando a nota for Transferencia entre filiais
- IF SF1->(!EOF()) .And. SF2->(FieldPos("F2_FILDEST"))> 0 .And. SF2->(FieldPos("F2_FORDES"))> 0 .And.SF2->(FieldPos("F2_LOJADES"))> 0 .And.SF2->(FieldPos("F2_FORMDES"))> 0 .And. !EMPTY (SF2->F2_FORDES)
- SFT->(dbSetOrder(1))
- cChaveSFT := SF1->F1_FILIAL+"E"+SF1->F1_SERIE+SF1->F1_DOC+SF1->F1_FORNECE+SF1->F1_LOJA
- If SFT->(MsSeek(cChaveSFT))
- Do While cChaveSFT == SFT->FT_FILIAL+"E"+SFT->FT_SERIE+SFT->FT_NFISCAL+SFT->FT_CLIEFOR+SFT->FT_LOJA .And. !SFT->(Eof())
- RecLock("SFT")
- SFT->FT_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnLock()
- //Array criado para gravar o SF3 no final, pois a tabela SF3 pode estah em processamento quando se trata de DBF ou AS/400.
- If aScan(aGrvSF3,{|aX|aX[1]+aX[2]+aX[3]+aX[4]+aX[5]==(cAliasSFT)->(FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA+FT_IDENTF3)})==0
- aAdd(aGrvSF3, {(cAliasSFT)->FT_SERIE,(cAliasSFT)->FT_NFISCAL,(cAliasSFT)->FT_CLIEFOR,(cAliasSFT)->FT_LOJA,(cAliasSFT)->FT_IDENTF3,(cAliasSFT)->FT_CHVNFE,cAutoriza,cCodRetSF3,cMsgSF3})
- EndIf
- SFT->(dbSkip())
- EndDo
- EndIf
- EndIf
- cAviso := ""
- cErro := ""
- //-----------------------------------------------------------------------
- // Validacao para quando for TOTVS Colaboracao, pois o retorno do
- // xml sera o que vem da Neogrid, e nao o que enviamos.
- // Para que nao fosse alterado totalmente a estrutura do Objeto,
- // atribui a variavel oRetNF o retorno, e abaixo identifico se possui
- // o objeto NFEPROC, caso tenha, deixarei na mesma estrutura do legado.
- // @autor: Douglas Parreja @since 30/10/2017
- //-----------------------------------------------------------------------
- oRetNF := XmlParser(aXML[nX][2],"_",@cAviso,@cErro)
- if ValAtrib("oRetNF:_NFEPROC") <> "U"
- oNfe := WSAdvValue( oRetNF,"_NFEPROC","string",NIL,NIL,NIL,NIL,NIL)
- else
- oNfe := oRetNF
- endif
- oNfeDPEC := XmlParser(aXML[nX][4],"_",@cAviso,@cErro)
- If Empty(cAviso) .And. Empty(cErro)
- ImpDet(@oDanfe,oNFe,cAutoriza,cModalidade,oNfeDPEC,cCodAutDPEC,aXml[nX][6],aXml[nX][7],aNotas[nX],lImpSimp,nTipo,aXml[nX][11])
- lExistNfe := .T.
- EndIf
- oNfe := nil
- oNfeDPEC := nil
- ElseIf lIsLoja
- /* Se o Codigo de Retorno da SEFAZ esta preenchido e for maior que 200, entao houve rejeicao por parte da SEFAZ */
- If !Empty(aXML[nX][9]) .AND. Val(aXML[nX][9]) > 200
- RecLock("SF2",.F.)
- Replace SF2->F2_FIMP with "N"
- SF2->( MsUnlock() )
- cNaoAut := "A impress緌 do DANFE referente ao Doc/S廨ie " + SF2->F2_DOC + "/" + SF2->F2_SERIE + " N鬃 FOI REALIZADA pelo motivo abaixo:"
- cNaoAut += CRLF + "[" + aXML[nX][9] + ' - ' + aXML[nX][10] + "]"
- cNaoAut += CRLF + "Se poss癉el, fa蓷 o ajuste e retransmita a NF-e."
- if (if(valtype(oDanfe) == "O", !oDanfe:lInJob, .T.))
- Aviso( "SPED", cNaoAut, {"Continuar"}, 3 )
- endif
- EndIf
- Else
- cNaoAut += SubStr(aNotas[nX][04],1,3)+aNotas[nX][05]+CRLF
- EndIf
- EndIf
- Next nX
- aNotas := {}
- RestArea(aAreaSF3)
- DelClassIntF()
- EndIf
- EndDo
- If !lQuery
- DBClearFilter()
- Ferase(cIndex+OrdBagExt())
- EndIf
- If !lIsLoja .AND. !Empty(cNaoAut) .and. if( valtype(oDanfe) == "O", !oDanfe:lInJob, .T. )
- Aviso("SPED","As seguintes notas n緌 foram autorizadas: "+CRLF+CRLF+cNaoAut,{"Ok"},3)
- EndIf
- ElseIf lImpDir
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- //袍ratamento para quando o parametro MV_IMPDIR esteja �
- //蚵abilitado, neste caso n緌 ser� feita a impress緌 conforme �
- //袒egistros no SF3, e sim buscando XML diretamente do �
- //逕ebService, e caso exista ser� impresso. �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- nLenarray := Val(Alltrim(MV_PAR02)) - Val(Alltrim(MV_PAR01))
- nCursor := 1
- While !lBreak .And. nLenarray >= 0
- If lFirst
- If MV_PAR04==1
- cxFilial := xFilial("SF1")
- cFrom := "%"+RetSqlName("SF1")+" SF1 %"
- If lSdoc
- cCampos += "%SF1.F1_FILIAL FILIAL, SF1.F1_DOC DOC, SF1.F1_SERIE SERIE, SF1.F1_SDOC SDOC%"
- cSerie := Padr(MV_PAR03,TamSx3("F1_SDOC")[1])
- cWhere := "%SF1.D_E_L_E_T_= '' AND SF1.F1_FILIAL ='"+xFilial("SF1")+"' AND SF1.F1_DOC <='"+MV_PAR02+ "' AND SF1.F1_DOC >='" + MV_PAR01 + "' AND SF1.F1_SDOC ='"+ cSerie + "' AND SF1.F1_ESPECIE = 'SPED' AND SF1.F1_FORMUL = 'S' ORDER BY SF1.F1_DOC%"
- Else
- cCampos += "%SF1.F1_FILIAL FILIAL, SF1.F1_DOC DOC, SF1.F1_SERIE SERIE%"
- cSerie := Padr(MV_PAR03,TamSx3("F2_SERIE")[1])
- cWhere := "%SF1.D_E_L_E_T_= '' AND SF1.F1_FILIAL ='"+xFilial("SF1")+"' AND SF1.F1_DOC <='"+MV_PAR02+ "' AND SF1.F1_DOC >='" + MV_PAR01 + "' AND SF1.F1_SERIE ='"+ cSerie + "' AND SF1.F1_ESPECIE = 'SPED' AND SF1.F1_FORMUL = 'S' ORDER BY SF1.F1_DOC%"
- Endif
- ElseIf MV_PAR04==2
- cxFilial := xFilial("SF2")
- cFrom := "%"+RetSqlName("SF2")+" SF2 %"
- If lSdoc
- cCampos += "%SF2.F2_FILIAL FILIAL, SF2.F2_DOC DOC, SF2.F2_SERIE SERIE, SF2.F2_SDOC SDOC%"
- cSerie := Padr(MV_PAR03,TamSx3("F2_SDOC")[1])
- cWhere := "%SF2.D_E_L_E_T_= '' AND SF2.F2_FILIAL ='"+xFilial("SF2")+"' AND SF2.F2_DOC <='"+MV_PAR02+ "' AND SF2.F2_DOC >='" + MV_PAR01 + "' AND SF2.F2_SDOC ='"+ cSerie + "' AND SF2.F2_ESPECIE IN ('SPED','NFCE') ORDER BY SF2.F2_DOC%"
- Else
- cCampos += "%SF2.F2_FILIAL FILIAL, SF2.F2_DOC DOC, SF2.F2_SERIE SERIE%"
- cSerie := Padr(MV_PAR03,TamSx3("F2_SERIE")[1])
- cWhere := "%SF2.D_E_L_E_T_= '' AND SF2.F2_FILIAL ='"+xFilial("SF2")+"' AND SF2.F2_DOC <='"+MV_PAR02+ "' AND SF2.F2_DOC >='" + MV_PAR01 + "' AND SF2.F2_SERIE ='"+ cSerie + "' AND SF2.F2_ESPECIE IN ('SPED','NFCE') AND SF2.F2_EMISSAO >= '" + %exp:DtoS(MV_PAR07)% + "' AND SF2.F2_EMISSAO <= '" + %exp:DtoS(MV_PAR08)% + "' ORDER BY SF2.F2_DOC%"
- Endif
- EndIf
- EndIf
- cAliasSFX := GetNextAlias()
- lQuery := .T.
- lFirst := .F.
- BeginSql Alias cAliasSFX
- SELECT
- %Exp:cCampos%
- FROM
- %Exp:cFrom%
- WHERE
- %Exp:cWhere%
- EndSql
- nTotalReg := Contar(cAliasSFX, "!EOF()")
- (cAliasSFX)->(DBGoTop())
- If lSdoc
- cSerId := (cAliasSFX)->SDOC
- Else
- cSerId := (cAliasSFX)->SERIE
- EndIf
- If Empty(cSerId) .Or. lEnd
- lBreak :=.T.
- EndIf
- While !Eof() .And. !lBreak .And. ;
- cxFilial == (cAliasSFX)->FILIAL .And.;
- cSerId == MV_PAR03 .And.;
- (cAliasSFX)->DOC >= MV_PAR01 .And.;
- (cAliasSFX)->DOC <= MV_PAR02
- aNotas := {}
- For nx:=1 To 20
- aadd(aNotas,{})
- aAdd(Atail(aNotas),.F.)
- aadd(Atail(aNotas),IIF(MV_PAR04==1,"E","S"))
- aAdd(Atail(aNotas),"")
- aadd(Atail(aNotas),(cAliasSFX)->SERIE)
- aAdd(Atail(aNotas),(cAliasSFX)->DOC)
- aadd(Atail(aNotas),"")
- aadd(Atail(aNotas),"")
- If ( (cAliasSFX)->(Eof()) ) .OR. (nCursor >= nTotalReg)
- lBreak :=.T.
- nx:=20
- EndIF
- nCursor++
- ( cAliasSFX )->( DbSkip() )
- Next nX
- aXml:={}
- if lUsaColab
- //Tratamento do TOTVS Colabora誽o
- aXml := GetXMLColab(aNotas,@cModalidade,lUsaColab)
- else
- aXml := GetXML(cIdEnt,aNotas,@cModalidade, if( valtype(oDanfe) == "O", oDanfe:lInJob, nil ))
- endif
- nLenNotas := Len(aNotas)
- For nx :=1 To nLenNotas
- dbSelectArea("SFT")
- dbSetOrder(1)
- cChaveSFT := (xFilial("SFT")+aNotas[nX][02]+aNotas[nX][04]+aNotas[nX][05])
- MsSeek(cChaveSFT)
- If ( !Empty(aXML[nX][2]) .AND. (AllTrim((cAliasSFT)->FT_ESPECIE)$'SPED,NFCE') .Or. (lImpDir .And. !Empty(aXML[nX][2])) ) .And. Empty((cAliasSFT)->FT_DTCANC)
- If !Empty(aXml[nX])
- cAutoriza := aXML[nX][1]
- cCodAutDPEC := aXML[nX][5]
- cCodRetNFE := aXML[nX][9]
- cCodRetSF3 := iif ( Empty (cCodAutDPEC),cCodRetNFE,cCodAutDPEC )
- cMsgSF3 := iif ( aXML[nX][10]<> Nil ,aXML[nX][10],"")
- Else
- cAutoriza := ""
- cCodAutDPEC := ""
- cCodRetNFE := ""
- cCodRetSF3 := ""
- cMsgSF3 := ""
- EndIf
- cAviso := ""
- cErro := ""
- //-----------------------------------------------------------------------
- // Validacao para quando for TOTVS Colaboracao, pois o retorno do
- // xml sera o que vem da Neogrid, e nao o que enviamos.
- // Para que nao fosse alterado totalmente a estrutura do Objeto,
- // atribui a variavel oRetNF o retorno, e abaixo identifico se possui
- // o objeto NFEPROC, caso tenha, deixarei na mesma estrutura do legado.
- // @autor: Douglas Parreja @since 30/10/2017
- //-----------------------------------------------------------------------
- oRetNF := XmlParser(aXML[nX][2],"_",@cAviso,@cErro)
- if ValAtrib("oRetNF:_NFEPROC") <> "U"
- oNfe := WSAdvValue( oRetNF,"_NFEPROC","string",NIL,NIL,NIL,NIL,NIL)
- else
- oNfe := oRetNF
- endif
- oNfeDPEC := XmlParser(aXML[nX][4],"_",@cAviso,@cErro)
- //(se possui protocolo ou protocolo dpec ou a modalidade de transmissao for 2 ou 5) E codigo retorno nao esta na lista
- If ( !Empty(cAutoriza) .Or. !Empty(cCodAutDPEC) .Or. Alltrim(aXML[nX][8]) $ "2,5" ) .And. !cCodRetNFE $ RetCodDene()
- If aNotas[nX][02]=="E" .And. MV_PAR04==1 .And. (oNfe:_NFE:_INFNFE:_IDE:_TPNF:TEXT=="0")
- dbSelectArea("SF1")
- dbSetOrder(1)
- If MsSeek(xFilial("SF1")+aNotas[nX][05]+aNotas[nX][04]) .And. SF1->(FieldPos("F1_FIMP"))<>0 .And. Alltrim(aXML[nX][8])$"1,3,4,6" .or. ( Alltrim(aXML[nX][8]) $ "2,5" .And. !Empty(cAutoriza) )
- Do While !Eof() .And. SF1->F1_DOC==aNotas[nX][05] .And. SF1->F1_SERIE==aNotas[nX][04]
- If SF1->F1_FORMUL == "S"
- if RecLock("SF1")
- If !SF1->F1_FIMP$"D"
- SF1->F1_FIMP := "S"
- EndIf
- If SF1->(FieldPos("F1_CHVNFE"))>0
- SF1->F1_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- EndIf
- If SF1->(FieldPos("F1_HAUTNFE")) > 0 .and. SF1->(FieldPos("F1_DAUTNFE")) > 0 //grava a data e hora de autoriza誽o da NFe
- SF1->F1_HAUTNFE := IIF(!Empty(aXML[nX][6]),SUBSTR(aXML[nX][6],1,5),"")
- SF1->F1_DAUTNFE := IIF(!Empty(aXML[nX][7]),aXML[nX][7],SToD(" / / "))
- EndIf
- SF1->(MsUnlock())
- endif
- // Atualiza誽o dos campos da Tabela GFE
- if FindFunction("GFECHVNFE") .and. lMVGfe // Integra誽o com o GFE
- if SF1->F1_TIPO $ "D|B" // Documento com tipo de devolu誽o ou "Utilizar Fornecedor"
- dbSelectArea("SA1")
- dbSetOrder(1)
- If SA1->(DbSeek(xFilial("SA1")+ SF1->F1_FORNECE + SF1->F1_LOJA))
- GFECHVNFE(xFilial("SF1"),SF1->F1_SERIE,SF1->F1_DOC,SF1->F1_TIPO,SA1->A1_CGC,SA1->A1_COD,SA1->A1_LOJA,SF1->F1_CHVNFE,SF1->F1_FIMP, "E")
- Endif
- else
- dbSelectArea("SA2")
- dbSetOrder(1)
- If SA2->(MsSeek(xFilial("SA2")+ SF1->F1_FORNECE + SF1->F1_LOJA,.T.))
- GFECHVNFE(xFilial("SF1"),SF1->F1_SERIE,SF1->F1_DOC,SF1->F1_TIPO,SA2->A2_CGC,SA2->A2_COD,SA2->A2_LOJA,SF1->F1_CHVNFE,SF1->F1_FIMP, "E")
- endif
- endif
- endif
- EndIf
- SF1->(DbSkip())
- EndDo
- EndIf
- ElseIf aNotas[nX][02]=="S" .And. MV_PAR04==2 .And. (oNfe:_NFE:_INFNFE:_IDE:_TPNF:TEXT=="1")
- dbSelectArea("SF2")
- dbSetOrder(1)
- If MsSeek(xFilial("SF2")+PADR(aNotas[nX][05],TAMSX3("F2_DOC")[1])+aNotas[nX][04]) .And. Alltrim(aXML[nX][8])$"1,3,4,6,7" .Or. ( Alltrim(aXML[nX][8]) $ "2,5" .And. !Empty(cAutoriza) )
- RecLock("SF2")
- If !SF2->F2_FIMP$"D"
- SF2->F2_FIMP := "S"
- EndIf
- If SF2->(FieldPos("F2_CHVNFE"))>0
- SF2->F2_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- EndIf
- If SF2->(FieldPos("F2_HAUTNFE")) > 0 .and. SF2->(FieldPos("F2_DAUTNFE")) > 0 //grava a data e hota de autoriza誽o da NFe
- SF2->F2_HAUTNFE := IIF(!Empty(aXML[nX][6]),SUBSTR(aXML[nX][6],1,5),"")
- SF2->F2_DAUTNFE := IIF(!Empty(aXML[nX][7]),aXML[nX][7],SToD(" / / "))
- EndIf
- MsUnlock()
- // Grava quando a nota for Transferencia entre filiais
- IF SF2->(FieldPos("F2_FILDEST"))> 0 .And. SF2->(FieldPos("F2_FORDES"))> 0 .And.SF2->(FieldPos("F2_LOJADES"))> 0 .And.SF2->(FieldPos("F2_FORMDES"))> 0 .And. !EMPTY (SF2->F2_FORDES)
- SF1->(dbSetOrder(1))
- If SF1->(MsSeek(SF2->F2_FILDEST+SF2->F2_DOC+SF2->f2_SERIE+SF2->F2_FORDES+SF2->F2_LOJADES+SF2->F2_FORMDES))
- If EMPTY(SF1->F1_CHVNFE)
- RecLock("SF1",.F.)
- SF1->F1_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnlock()
- EndIf
- Endif
- EndiF
- EndIf
- // Atualiza誽o dos campos da Tabela GFE
- if FindFunction("GFECHVNFE") .and. lMVGfe // Integra誽o com o GFE
- if SF2->F2_TIPO $ "D|B" // Documento com tipo de devolu誽o ou "Utilizar Fornecedor"
- dbSelectArea("SA2")
- dbSetOrder(1)
- If SA2->(MsSeek(xFilial("SA2")+ SF2->F2_CLIENTE + SF2->F2_LOJA,.T.))
- GFECHVNFE(xFilial("SF2"),SF2->F2_SERIE,SF2->F2_DOC,SF2->F2_TIPO,SA2->A2_CGC,SA2->A2_COD,SA2->A2_LOJA,SF2->F2_CHVNFE,SF2->F2_FIMP, "S")
- EndIf
- else
- dbSelectArea("SA1")
- dbSetOrder(1)
- If SA1->(MsSeek(xFilial("SA1")+ SF2->F2_CLIENTE + SF2->F2_LOJA,.T.))
- GFECHVNFE(xFilial("SF2"),SF2->F2_SERIE,SF2->F2_DOC,SF2->F2_TIPO,SA1->A1_CGC,SA1->A1_COD,SA1->A1_LOJA,SF2->F2_CHVNFE,SF2->F2_FIMP, "S")
- Endif
- endif
- endif
- If ExistFunc("STFMMd5NS") //Fun誽o do Controle de Lojas - Legisla誽o PAF-ECF
- STFMMd5NS()
- EndIf
- EndIf
- dbSelectArea("SFT")
- dbSetOrder(1)
- If SFT->(FieldPos("FT_CHVNFE"))>0
- cChaveSFT := (xFilial("SFT")+aNotas[nX][02]+aNotas[nX][04]+padr(aNotas[nX][05],TamSx3("FT_NFISCAL")[1],""))
- If MsSeek(cChaveSFT)
- Do While !(cAliasSFT)->(Eof ()) .And.;
- cChaveSFT==(cAliasSFT)->FT_FILIAL+(cAliasSFT)->FT_TIPOMOV+(cAliasSFT)->FT_SERIE+(cAliasSFT)->FT_NFISCAL
- If (cAliasSFT)->FT_TIPOMOV $"S" .Or. ((cAliasSFT)->FT_TIPOMOV $"E" .And. (cAliasSFT)->FT_FORMUL=='S')
- RecLock("SFT")
- SFT->FT_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnLock()
- //Array criado para gravar o SF3 no final, pois a tabela SF3 pode estah em processamento quando se trata de DBF ou AS/400.
- If aScan(aGrvSF3,{|aX|aX[1]+aX[2]+aX[3]+aX[4]+aX[5]==(cAliasSFT)->(FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA+FT_IDENTF3)})==0
- aAdd(aGrvSF3, {(cAliasSFT)->FT_SERIE,(cAliasSFT)->FT_NFISCAL,(cAliasSFT)->FT_CLIEFOR,(cAliasSFT)->FT_LOJA,(cAliasSFT)->FT_IDENTF3,(cAliasSFT)->FT_CHVNFE,cAutoriza,cCodRetSF3,cMsgSF3})
- EndIf
- EndIf
- DbSkip()
- EndDo
- Endif
- EndIf
- // Grava quando a nota for Transferencia entre filiais
- IF SF1->(!EOF()) .And. SF2->(FieldPos("F2_FILDEST"))> 0 .And. SF2->(FieldPos("F2_FORDES"))> 0 .And.SF2->(FieldPos("F2_LOJADES"))> 0 .And.SF2->(FieldPos("F2_FORMDES"))> 0 .And. !EMPTY (SF2->F2_FORDES)
- SFT->(dbSetOrder(1))
- cChaveSFT := SF1->F1_FILIAL+"E"+SF1->F1_SERIE+SF1->F1_DOC+SF1->F1_FORNECE+SF1->F1_LOJA
- If SFT->(MsSeek(cChaveSFT))
- Do While cChaveSFT == SFT->FT_FILIAL+"E"+SFT->FT_SERIE+SFT->FT_NFISCAL+SFT->FT_CLIEFOR+SFT->FT_LOJA .And. !SFT->(Eof())
- RecLock("SFT")
- SFT->FT_CHVNFE := SubStr(NfeIdSPED(aXML[nX][2],"Id"),4)
- MsUnLock()
- //Array criado para gravar o SF3 no final, pois a tabela SF3 pode estah em processamento quando se trata de DBF ou AS/400.
- If aScan(aGrvSF3,{|aX|aX[1]+aX[2]+aX[3]+aX[4]+aX[5]==(cAliasSFT)->(FT_SERIE+FT_NFISCAL+FT_CLIEFOR+FT_LOJA+FT_IDENTF3)})==0
- aAdd(aGrvSF3, {(cAliasSFT)->FT_SERIE,(cAliasSFT)->FT_NFISCAL,(cAliasSFT)->FT_CLIEFOR,(cAliasSFT)->FT_LOJA,(cAliasSFT)->FT_IDENTF3,(cAliasSFT)->FT_CHVNFE,cAutoriza,cCodRetSF3,cMsgSF3})
- EndIf
- SFT->(dbSkip())
- EndDo
- EndIf
- EndIf
- //-------------------------------
- If Empty(cAviso) .And. Empty(cErro) .And. MV_PAR04==1 .And. (oNfe:_NFE:_INFNFE:_IDE:_TPNF:TEXT=="0")
- ImpDet(@oDanfe,oNFe,cAutoriza,cModalidade,oNfeDPEC,cCodAutDPEC,aXml[nX][6],aXml[nX][7],aNotas[nX],lImpSimp,,aXml[nx][11])
- lExistNfe := .T.
- ElseIf Empty(cAviso) .And. Empty(cErro) .And. MV_PAR04==2 .And. (oNfe:_NFE:_INFNFE:_IDE:_TPNF:TEXT=="1")
- ImpDet(@oDanfe,oNFe,cAutoriza,cModalidade,oNfeDPEC,cCodAutDPEC,aXml[nX][6],aXml[nX][7],aNotas[nX],lImpSimp,,aXml[nx][11])
- lExistNfe := .T.
- EndIf
- ElseIf lIsLoja
- /* Se o Codigo de Retorno da SEFAZ esta preenchido e for maior que 200, entao houve rejeicao por parte da SEFAZ */
- If !Empty(aXML[nX][9]) .AND. Val(aXML[nX][9]) > 200
- RecLock("SF2",.F.)
- Replace SF2->F2_FIMP with "N"
- SF2->( MsUnlock() )
- cNaoAut := "A impress緌 do DANFE referente ao Doc/S廨ie " + SF2->F2_DOC + "/" + SF2->F2_SERIE + " N鬃 FOI REALIZADA pelo motivo abaixo:"
- cNaoAut += CRLF + "[" + aXML[nX][9] + ' - ' + aXML[nX][10] + "]"
- cNaoAut += CRLF + "Se poss癉el, fa蓷 o ajuste e retransmita a NF-e."
- if (if(valtype(oDanfe) == "O", !oDanfe:lInJob, .T.))
- Aviso( "SPED", cNaoAut, {"Continuar"}, 3 )
- endif
- EndIf
- Else
- cNaoAut += aNotas[nX][04]+aNotas[nX][05]+CRLF
- EndIf
- EndIf
- oNfe := nil
- oNfeDPEC := nil
- delClassIntF()
- Next nx
- EndDo
- EndDo
- If !lIsLoja .AND. !Empty(cNaoAut) .and. if( valtype(oDanfe) == "O", !oDanfe:lInJob, .T. )
- Aviso("SPED","As seguintes notas n緌 foram autorizadas: "+CRLF+CRLF+cNaoAut,{"Ok"},3)
- EndIf
- EndIf
- If Len(aGrvSF3)>0 .And. SF3->(FieldPos("F3_CHVNFE"))>0
- SF3->( dbSetOrder( 5 ) )
- For nI := 1 To Len(aGrvSF3)
- cChavSF3 := xFilial("SF3")+aGrvSF3[nI,1]+aGrvSF3[nI,2]+aGrvSF3[nI,3]+aGrvSF3[nI,4]+aGrvSF3[nI,5]
- If SF3->(MsSeek(xFilial("SF3")+aGrvSF3[nI,1]+aGrvSF3[nI,2]+aGrvSF3[nI,3]+aGrvSF3[nI,4]+aGrvSF3[nI,5]))
- Do While cChavSF3 == xFilial("SF3")+SF3->F3_SERIE+SF3->F3_NFISCAL+SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_IDENTFT .And. !SF3->(Eof())
- lChave := iif( lUsacolab, .T., Empty(SF3->F3_CHVNFE) )
- If (Val(SF3->F3_CFO) >= 5000 .Or. SF3->F3_FORMUL=='S') .And. lChave
- RecLock("SF3",.F.)
- SF3->F3_CHVNFE := aGrvSF3[nI,6] // Chave da nota
- SF3->F3_PROTOC := aGrvSF3[nI,7] // Protocolo
- SF3->F3_CODRSEF:= aGrvSF3[nI,8] // Codigo de retorno Sefaz
- SF3->F3_DESCRET:= aGrvSF3[nI,9] // Mensagem de retorno Sefaz
- SF3->F3_CODRET := iif (SF3->(FieldPos("F3_CODRET"))>0,"M",)
- MsUnLock()
- EndIf
- SF3->(dbSkip())
- EndDo
- EndIf
- Next nI
- EndIf
- RestArea(aArea)
- Return .T.
- /*/
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控矬闡闡闡闡鐃闡闡闡闡闡薩闡闡闡薩闡闡闡闡闡闡闡闡闡闡闡薩闡闡鐃闡闡闡闡闡膨�
- 控袈rogram � ImpDet � Autor � Eduardo Riera � Data �16.11.2006陰�
- 控藥闡闡闡闡霰闡闡闡闡闡謐闡闡闡謐闡闡闡闡闡闡闡闡闡闡闡謐闡闡鐘闡闡闡闡闡敢�
- 控蛇escri�o 彪ontrole de Fluxo do Relatorio. 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袒etorno 術enhum 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袈arametros蛀xpO1: Objeto grafico de impressao (OPC) 陰�
- 控� 蛀xpC2: String com o XML da NFe 陰�
- 控� 蛀xpC3: Codigo de Autorizacao do fiscal (OPC) 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡鐃闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� DATA � Programador 蛉anutencao efetuada 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� � � 陰�
- 控斂闡闡闡闡鐘闡闡闡闡闡闡闡鐘闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡棱�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔�
- /*/
- Static Function ImpDet( oDanfe , oNfe , cCodAutSef , cModalidade ,;
- oNfeDPEC , cCodAutDPEC , cDtHrRecCab , dDtReceb ,;
- aNota , lImpSimp , nTipo , cMsgRet)
- local cProg := iif(existBlock("IMPDNFLJ"),"U_IMPDNFLJ","IMPDNFLJ")
- DEFAULT lImpSimp := .F.
- Default nTipo := 0
- Default cMsgRet := ""
- If nTipo <> 1
- PRIVATE oFont10N := TFontEx():New(oDanfe,"Times New Roman",08,08,.T.,.T.,.F.)// 1
- PRIVATE oFont07N := TFontEx():New(oDanfe,"Times New Roman",06,06,.T.,.T.,.F.)// 2
- PRIVATE oFont07 := TFontEx():New(oDanfe,"Times New Roman",06,06,.F.,.T.,.F.)// 3
- PRIVATE oFont08 := TFontEx():New(oDanfe,"Times New Roman",07,07,.F.,.T.,.F.)// 4
- PRIVATE oFont08N := TFontEx():New(oDanfe,"Times New Roman",06,06,.T.,.T.,.F.)// 5
- PRIVATE oFont09N := TFontEx():New(oDanfe,"Times New Roman",08,08,.T.,.T.,.F.)// 6
- PRIVATE oFont09 := TFontEx():New(oDanfe,"Times New Roman",08,08,.F.,.T.,.F.)// 7
- PRIVATE oFont10 := TFontEx():New(oDanfe,"Times New Roman",09,09,.F.,.T.,.F.)// 8
- PRIVATE oFont11 := TFontEx():New(oDanfe,"Times New Roman",10,10,.F.,.T.,.F.)// 9
- PRIVATE oFont12 := TFontEx():New(oDanfe,"Times New Roman",11,11,.F.,.T.,.F.)// 10
- PRIVATE oFont11N := TFontEx():New(oDanfe,"Times New Roman",10,10,.T.,.T.,.F.)// 11
- PRIVATE oFont18N := TFontEx():New(oDanfe,"Times New Roman",17,17,.T.,.T.,.F.)// 12
- PRIVATE OFONT12N := TFontEx():New(oDanfe,"Times New Roman",11,11,.T.,.T.,.F.)// 12
- PRIVATE lUsaColab := UsaColaboracao("1")
- if lImpSimp
- SimpDanfe(@oDanfe,oNfe,cCodAutSef,cModalidade,oNfeDPEC,cCodAutDPEC,cDtHrRecCab,dDtReceb,aNota)
- else
- PrtDanfe(@oDanfe,oNfe,cCodAutSef,cModalidade,oNfeDPEC,cCodAutDPEC,cDtHrRecCab,dDtReceb,aNota,cMsgRet)
- endif
- ElseIf nTipo == 1
- &cProg.(oNFE, cCodAutSef, dDtReceb, cDtHrRecCab)
- EndIf
- Return(.T.)
- /*
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控矬闡闡闡闡鐃闡闡闡闡闡薩闡闡闡薩闡闡闡闡闡闡闡闡闡闡闡薩闡闡鐃闡闡闡闡闡膨�
- 控蚶un�o 袈rtDanfe � Autor 蛀duardo Riera � Data �16.11.2006陰�
- 控藥闡闡闡闡霰闡闡闡闡闡謐闡闡闡謐闡闡闡闡闡闡闡闡闡闡闡謐闡闡鐘闡闡闡闡闡敢�
- 控蛇escri�o 蛆mpressao do formulario DANFE grafico conforme laytout no 陰�
- 控� 貨ormato retrato 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袖intaxe � PrtDanfe() 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袒etorno � Nenhum 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控袈arametros蛀xpO1: Objeto grafico de impressao 陰�
- 控� 蛀xpO2: Objeto da NFe 陰�
- 控� 蛀xpC3: Codigo de Autorizacao do fiscal (OPC) 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡鐃闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� DATA � Programador 蛉anutencao Efetuada 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� � � 陰�
- 控斂闡闡闡闡鐘闡闡闡闡闡闡闡鐘闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡棱�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔�
- */
- Static Function PrtDanfe(oDanfe,oNFE,cCodAutSef,cModalidade,oNfeDPEC,cCodAutDPEC,cDtHrRecCab,dDtReceb,aNota,cMsgRet)
- Local aAuxCabec := {} // Array que conter� as strings de cabe蓷lho das colunas de produtos/servi蔞s.
- Local aTamCol := {} // Array que conter� o tamanho das colunas dos produtos/servi蔞s.
- Local aSitTrib := {}
- Local aSitSN := {}
- Local aTransp := {}
- Local aDest := {}
- Local aRetirada := {}
- Local aEntrega := {}
- Local aHrEnt := {}
- Local aFaturas := {}
- Local aItens := {}
- Local aISSQN := {}
- Local aSimpNac := {}
- Local aTotais := {}
- Local aAux := {}
- Local aUF := {}
- Local aMensagem := {}
- Local aEspVol := {}
- Local aResFisco := {}
- Local aEspecie := {}
- Local aIndImp := {}
- Local aIndAux := {}
- Local nAuxH := 0
- Local nAuxH2 := 0
- Local nSnBaseIcm := 0
- Local nSnValIcm := 0
- Local nDetImp := 0
- Local nS := 0
- Local nX := 0
- Local nY := 0
- Local nL := 0
- Local nFolha := 1
- Local nFolhas := 0
- Local nItem := 0
- Local nMensagem := 0
- Local nBaseICM := 0
- Local nValICM := 0
- Local nValIPI := 0
- Local nPICM := 0
- Local nPIPI := 0
- Local nFaturas := 0
- Local nVTotal := 0
- Local nQtd := 0
- Local nVUnit := 0
- Local nVolume := 0
- Local nLenVol
- Local nLenDet
- Local nLenSit
- Local nLenItens := 0
- Local nLenMensagens := 0
- Local nColuna := 0
- Local nRecSF3 := 0
- Local nE := 0
- Local nAjustImp := 0
- local nAjustaRet := 0
- Local nAjustaEnt := 0
- Local nAjustaFat := 0
- Local nAjustaVt := 0
- Local nAjustaPro := 0
- Local nZ := 0
- Local nMaxCod := 0
- Local nMaxDes := MAXITEMC
- Local nLinhavers := 0
- Local nMaxItemP2 := MAXITEM // Vari嫛el utilizada para tratamento de quantos itens devem ser impressos na p墔ina corrente
- Local cAux := ""
- Local cSitTrib := ""
- Local cUF := ""
- Local cMVCODREG := Alltrim( SuperGetMV("MV_CODREG", ," ") )
- Local cChaveCont := ""
- Local cLogo := FisxLogo("1")
- Local cGuarda := ""
- Local cEsp := ""
- Local cLogoD := ""
- local cLogoTotvs := "Powered_by_TOTVS.bmp"
- local cStartPath := GetSrvProfString("Startpath","")
- Local lPreview := .F.
- Local lFlag := .T.
- Local lConverte := GetNewPar("MV_CONVERT",.F.)
- Local lImpAnfav := GetNewPar("MV_IMPANF",.F.)
- Local lImpInfAd := GetNewPar("MV_IMPADIC",.F.)
- Local lImpSimpN := GetNewPar("MV_IMPSIMP",.F.)
- Local lVerso := .F.
- Local lMv_Logod := If(GetNewPar("MV_LOGOD", "N" ) == "S", .T., .F. )
- Local lMv_ItDesc := Iif( GetNewPar("MV_ITDESC","N")=="S", .T., .F. )
- Local lNFori2 := .T.
- Local lFimpar := .T.
- Local lEntIpiDev := GetNewPar("MV_EIPIDEV",.F.) /*Apenas para nota de entrada de Devolu誽o de ipi. .T.-S廨a destacado no cabe蓷lho + inf.compl/.F.-Ser� destacado apenas em inf.compl*/
- Local cDhCont := ""
- Local cXJust := ""
- Local cDescLogo := ""
- Local cGrpCompany := ""
- Local cCodEmpGrp := ""
- Local cUnitGrp := ""
- Local cFilGrp := ""
- Local lPontilhado := .F.
- Local aAuxCom := {}
- Local cUnTrib := ""
- Local nQtdTrib := 0
- Local nVUnitTrib := 0
- Local lUf_MG := ( SuperGetMv("MV_ESTADO") $ "MG" ) // Criado esta variavel para atender o RICMS de MG para totalizar por CFOP
- Local nSequencia := 0
- Local nSubTotal := 0
- Local cCfop := ""
- Local cCfopAnt := ""
- Local aItensAux := {}
- Local aArray := {}
- Local cDadosProt := ""
- Local aMsgRet := {}
- local cMarca := ""
- local cNumeracao := ""
- local aMarca := {}
- local aNumeracao := {}
- Local lNFCE := Substr(oNFe:_NFe:_InfNfe:_ID:Text,24,2) == "65"
- Default cDtHrRecCab := ""
- Default dDtReceb := CToD("")
- Private aInfNf := {}
- Private oDPEC := oNfeDPEC
- Private oNF := oNFe:_NFe
- Private oEmitente := oNF:_InfNfe:_Emit
- Private oIdent := oNF:_InfNfe:_IDE
- Private oDestino := IIf(Type("oNF:_InfNfe:_Dest")=="U",Nil,oNF:_InfNfe:_Dest)
- Private oTotal := oNF:_InfNfe:_Total
- Private oTransp := oNF:_InfNfe:_Transp
- Private oDet := oNF:_InfNfe:_Det
- Private oFatura := IIf(Type("oNF:_InfNfe:_Cobr")=="U",Nil,oNF:_InfNfe:_Cobr)
- Private oImposto
- Private oEntrega := IIf(Type("oNF:_InfNfe:_Entrega") =="U",Nil,oNF:_InfNfe:_Entrega)
- Private oRetirada := IIf(Type("oNF:_InfNfe:_Retirada")=="U",Nil,oNF:_InfNfe:_Retirada)
- Private nPrivate := 0
- Private nPrivate2 := 0
- Private nXAux := 0
- Private lArt488MG := .F.
- Private lArt274SP := .F.
- nFaturas := IIf(oFatura<>Nil,IIf(ValType(oNF:_InfNfe:_Cobr:_Dup)=="A",Len(oNF:_InfNfe:_Cobr:_Dup),1),0)
- oDet := IIf(ValType(oDet)=="O",{oDet},oDet)
- nAjustImp := 0
- nAjustaRet := 0
- nAjustaEnt := 0
- nAjustaFat := 0
- nAjustaVt := 0
- nAjustaPro := 0
- // Popula as variaveis
- if( valType(oEntrega)=="O" ) .and. ( valType(oRetirada)=="O")
- nAjustImp := 160
- nAjustaRet := 75
- nAjustaEnt := 150
- nAjustaFat := 160
- nAjustaVt := 160
- nAjustaPro := 160
- nMaxItem := 6
- nMaxItemP2 := 6
- ElseIF ( valType(oEntrega)=="O" ) .and. ( valType(oRetirada)=="U")
- nAjustaRet := 37
- nAjustaEnt := 75
- nAjustImp := 80
- nAjustaFat := 80
- nAjustaVt := 80
- nAjustaPro := 80
- nMaxItem := 14
- nMaxItemP2 := 14
- ElseIF ( valType(oEntrega)=="U" ) .and. ( valType(oRetirada)=="O")
- nAjustaRet := 75
- nAjustaEnt := 150
- nAjustImp := 80
- nAjustaFat := 80
- nAjustaVt := 80
- nAjustaPro := 80
- nMaxItem := 14
- nMaxItemP2 := 14
- EndIf
- If ( valType(oRetirada)=="O" )
- aRetirada := {IIF(Type("oRetirada:_xNome")=="U","",oRetirada:_xNome:Text),;
- IIF(Type("oRetirada:_CNPJ")=="U","",oRetirada:_CNPJ:Text),;
- IIF(Type("oRetirada:_CPF")=="U","",oRetirada:_CPF:Text),;
- IIF(Type("oRetirada:_xLgr")=="U","",oRetirada:_xLgr:Text),;
- IIF(Type("oRetirada:_nro")=="U","",oRetirada:_nro:Text),;
- IIF(Type("oRetirada:_xCpl")=="U","",oRetirada:_xCpl:Text),;
- IIF(Type("oRetirada:_xBairro")=="U","",oRetirada:_xBairro:Text),;
- IIF(Type("oRetirada:_xMun")=="U","",oRetirada:_xMun:Text),;
- IIF(Type("oRetirada:_UF")=="U","",oRetirada:_UF:Text),;
- IIF(Type("oRetirada:_IE")=="U","",oRetirada:_IE:Text),;
- IIF(Type("oRetirada:_CEP")=="U","",oRetirada:_CEP:Text),;
- IIF(Type("oRetirada:_FONE")=="U","",oRetirada:_Fone:Text),;
- ""}
- endIf
- If ( valType(oEntrega)=="O" )
- aEntrega := {IIF(Type("oEntrega:_xNome")=="U","",oEntrega:_xNome:Text),;
- IIF(Type("oEntrega:_CNPJ")=="U","",oEntrega:_CNPJ:Text),;
- IIF(Type("oEntrega:_CPF")=="U","",oEntrega:_CPF:Text),;
- IIF(Type("oEntrega:_xLgr")=="U","",oEntrega:_xLgr:Text),;
- IIF(Type("oEntrega:_nro")=="U","",oEntrega:_nro:Text),;
- IIF(Type("oEntrega:_xCpl")=="U","",oEntrega:_xCpl:Text),;
- IIF(Type("oEntrega:_xBairro")=="U","",oEntrega:_xBairro:Text),;
- IIF(Type("oEntrega:_xMun")=="U","",oEntrega:_xMun:Text),;
- IIF(Type("oEntrega:_UF")=="U","",oEntrega:_UF:Text),;
- IIF(Type("oEntrega:_IE")=="U","",oEntrega:_IE:Text),;
- IIF(Type("oEntrega:_CEP")=="U","",oEntrega:_CEP:Text),;
- IIF(Type("oEntrega:_FONE")=="U","",oEntrega:_Fone:Text),;
- ""}
- endIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //彪arrega as variaveis de impressao �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aadd(aSitTrib,"00")
- aadd(aSitTrib,"10")
- aadd(aSitTrib,"20")
- aadd(aSitTrib,"30")
- aadd(aSitTrib,"40")
- aadd(aSitTrib,"41")
- aadd(aSitTrib,"50")
- aadd(aSitTrib,"51")
- aadd(aSitTrib,"60")
- aadd(aSitTrib,"70")
- aadd(aSitTrib,"90")
- aadd(aSitTrib,"PART")
- aadd(aSitSN,"101")
- aadd(aSitSN,"102")
- aadd(aSitSN,"201")
- aadd(aSitSN,"202")
- aadd(aSitSN,"500")
- aadd(aSitSN,"900")
- //Impressao DANFE A4 no PDV NFC-e
- if lNFCE .AND. (oDestino == Nil .or. type("oDestino:_EnderDest") == "U")
- oDestino := MontaNfcDest(oDestino)
- endif
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro Destinatario �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aDest := {MontaEnd(oDestino:_EnderDest),;
- NoChar(oDestino:_EnderDest:_XBairro:Text,lConverte),;
- IIF(Type("oDestino:_EnderDest:_Cep")=="U","",Transform(oDestino:_EnderDest:_Cep:Text,"@r 99999-999")),;
- IIF(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",IIF(Type("oIdent:_DHSaiEnt")=="U","",oIdent:_DHSaiEnt:Text),IIF(Type("oIdent:_DSaiEnt")=="U","",oIdent:_DSaiEnt:Text)),;
- oDestino:_EnderDest:_XMun:Text,;
- IIF(Type("oDestino:_EnderDest:_fone")=="U","",oDestino:_EnderDest:_fone:Text),;
- oDestino:_EnderDest:_UF:Text,;
- IIF(Type("oDestino:_IE")=="U","",oDestino:_IE:Text),;
- ""}
- If oNF:_INFNFE:_VERSAO:TEXT >= "3.10"
- aadd(aHrEnt,IIF(Type("oIdent:_dhSaiEnt")=="U","",SubStr(oIdent:_dhSaiEnt:TEXT,12,8)))
- Else
- If Type("oIdent:_DSaiEnt")<>"U" .And. Type("oIdent:_HSaiEnt:Text")<>"U"
- aAdd(aHrEnt,oIdent:_HSaiEnt:Text)
- Else
- aAdd(aHrEnt,"")
- EndIf
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //彪alculo do Imposto �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aTotais := {"","","","","","","","","","",""}
- aTotais[01] := Transform(Val(oTotal:_ICMSTOT:_vBC:TEXT),"@e 9,999,999,999,999.99")
- aTotais[02] := Transform(Val(oTotal:_ICMSTOT:_vICMS:TEXT),"@e 9,999,999,999,999.99")
- aTotais[03] := Transform(Val(oTotal:_ICMSTOT:_vBCST:TEXT),"@e 9,999,999,999,999.99")
- aTotais[04] := Transform(Val(oTotal:_ICMSTOT:_vST:TEXT),"@e 9,999,999,999,999.99")
- aTotais[05] := Transform(Val(oTotal:_ICMSTOT:_vProd:TEXT),"@e 9,999,999,999,999.99")
- aTotais[06] := Transform(Val(oTotal:_ICMSTOT:_vFrete:TEXT),"@e 9,999,999,999,999.99")
- aTotais[07] := Transform(Val(oTotal:_ICMSTOT:_vSeg:TEXT),"@e 9,999,999,999,999.99")
- aTotais[08] := Transform(Val(oTotal:_ICMSTOT:_vDesc:TEXT),"@e 9,999,999,999,999.99")
- aTotais[09] := Transform(Val(oTotal:_ICMSTOT:_vOutro:TEXT),"@e 9,999,999,999,999.99")
- If ( MV_PAR04 == 1 )
- dbSelectArea("SF1")
- dbSetOrder(1)
- If MsSeek(xFilial("SF1")+aNota[5]+aNota[4]+aNota[6]+aNota[7]) .And. SF1->(FieldPos("F1_FIMP"))<>0
- If SF1->F1_TIPO <> "D"
- aTotais[10] := Transform(Val(oTotal:_ICMSTOT:_vIPI:TEXT),"@e 9,999,999,999,999.99")
- ElseIf SF1->F1_TIPO == "D" .and. lEntIpiDev
- aTotais[10] := Transform(Val(oTotal:_ICMSTOT:_vIPI:TEXT),"@e 9,999,999,999,999.99")
- Else
- aTotais[10] := "0,00"
- EndIf
- MsUnlock()
- DbSkip()
- EndIf
- Else
- aTotais[10] := Transform(Val(oTotal:_ICMSTOT:_vIPI:TEXT),"@e 9,999,999,999,999.99")
- EndIf
- aTotais[11] := Transform(Val(oTotal:_ICMSTOT:_vNF:TEXT),"@e 9,999,999,999,999.99")
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- //蛆mpress緌 da Base de Calculo e ICMS nos campo Proprios do ICMS quando optante pelo Simples Nacional �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- If lImpSimpN
- nDetImp := Len(oDet)
- nS := nDetImp
- aSimpNac := {"",""}
- if Type("oDet["+Alltrim(Str(nS))+"]:_IMPOSTO:_ICMS:_ICMSSN101:_VCREDICMSSN:TEXT") <> "U"
- SF3->(dbSetOrder(5))
- if SF3->(MsSeek(xFilial("SF3")+aNota[4]+aNota[5]))
- while SF3->(!eof()) .and. ( SF3->F3_SERIE + SF3->F3_NFISCAL == aNota[4] + aNota[5] )
- nSnBaseIcm += (SF3->F3_BASEICM)
- nSnValIcm += (SF3->F3_VALICM)
- SF3->(dbSkip())
- end
- endif
- elseif Type("oDet["+Alltrim(Str(nS))+"]:_IMPOSTO:_ICMS:_ICMSSN900:_VCREDICMSSN:TEXT") <> "U"
- nS:= 0
- For nS := 1 To nDetImp
- If ValAtrib("oDet["+Alltrim(Str(nS))+"]:_IMPOSTO:_ICMS:_ICMSSN900:_VBC:TEXT") <> "U"
- nSnBaseIcm += Val(oDet[nS]:_IMPOSTO:_ICMS:_ICMSSN900:_VBC:TEXT)
- EndIf
- If ValAtrib("oDet["+Alltrim(Str(nS))+"]:_IMPOSTO:_ICMS:_ICMSSN900:_VCREDICMSSN:TEXT") <> "U"
- nSnValIcm += Val(oDet[nS]:_IMPOSTO:_ICMS:_ICMSSN900:_VCREDICMSSN:TEXT)
- EndIf
- Next nS
- endif
- aSimpNac[01] := Transform((nSnBaseIcm),"@e 9,999,999,999,999.99")
- aSimpNac[02] := Transform((nSnValIcm),"@e 9,999,999,999,999.99")
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro Faturas �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If nFaturas > 0
- For nX := 1 To 3
- aAux := {}
- For nY := 1 To Min(9, nFaturas)
- Do Case
- Case nX == 1
- If nFaturas > 1
- AAdd(aAux, AllTrim(oFatura:_Dup[nY]:_nDup:TEXT))
- Else
- AAdd(aAux, AllTrim(oFatura:_Dup:_nDup:TEXT))
- EndIf
- Case nX == 2
- If nFaturas > 1
- AAdd(aAux, AllTrim(ConvDate(oFatura:_Dup[nY]:_dVenc:TEXT)))
- Else
- AAdd(aAux, AllTrim(ConvDate(oFatura:_Dup:_dVenc:TEXT)))
- EndIf
- Case nX == 3
- If nFaturas > 1
- AAdd(aAux, AllTrim(TransForm(Val(oFatura:_Dup[nY]:_vDup:TEXT), "@E 9,999,999,999,999.99")))
- Else
- AAdd(aAux, AllTrim(TransForm(Val(oFatura:_Dup:_vDup:TEXT), "@E 9,999,999,999,999.99")))
- EndIf
- EndCase
- Next nY
- If nY <= 9
- For nY := 1 To 9
- AAdd(aAux, Space(20))
- Next nY
- EndIf
- AAdd(aFaturas, aAux)
- Next nX
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro transportadora �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aTransp := {"","0","","","","","","","","","","","","","",""}
- If Type("oTransp:_ModFrete")<>"U"
- aTransp[02] := IIF(Type("oTransp:_ModFrete:TEXT")<>"U",oTransp:_ModFrete:TEXT,"0")
- EndIf
- If Type("oTransp:_Transporta")<>"U"
- aTransp[01] := IIf(Type("oTransp:_Transporta:_xNome:TEXT")<>"U",NoChar(oTransp:_Transporta:_xNome:TEXT,lConverte),"")
- // aTransp[02] := IIF(Type("oTransp:_ModFrete:TEXT")<>"U",oTransp:_ModFrete:TEXT,"0")
- aTransp[03] := IIf(Type("oTransp:_VeicTransp:_RNTC")=="U","",oTransp:_VeicTransp:_RNTC:TEXT)
- aTransp[04] := IIf(Type("oTransp:_VeicTransp:_Placa:TEXT")<>"U",oTransp:_VeicTransp:_Placa:TEXT,"")
- aTransp[05] := IIf(Type("oTransp:_VeicTransp:_UF:TEXT")<>"U",oTransp:_VeicTransp:_UF:TEXT,"")
- If Type("oTransp:_Transporta:_CNPJ:TEXT")<>"U"
- aTransp[06] := Transform(oTransp:_Transporta:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- ElseIf Type("oTransp:_Transporta:_CPF:TEXT")<>"U"
- aTransp[06] := Transform(oTransp:_Transporta:_CPF:TEXT,"@r 999.999.999-99")
- EndIf
- aTransp[07] := IIf(Type("oTransp:_Transporta:_xEnder:TEXT")<>"U",NoChar(oTransp:_Transporta:_xEnder:TEXT,lConverte),"")
- aTransp[08] := IIf(Type("oTransp:_Transporta:_xMun:TEXT")<>"U",oTransp:_Transporta:_xMun:TEXT,"")
- aTransp[09] := IIf(Type("oTransp:_Transporta:_UF:TEXT")<>"U",oTransp:_Transporta:_UF:TEXT,"")
- aTransp[10] := IIf(Type("oTransp:_Transporta:_IE:TEXT")<>"U",oTransp:_Transporta:_IE:TEXT,"")
- ElseIf Type("oTransp:_VEICTRANSP")<>"U"
- aTransp[03] := IIf(Type("oTransp:_VeicTransp:_RNTC")=="U","",oTransp:_VeicTransp:_RNTC:TEXT)
- aTransp[04] := IIf(Type("oTransp:_VeicTransp:_Placa:TEXT")<>"U",oTransp:_VeicTransp:_Placa:TEXT,"")
- aTransp[05] := IIf(Type("oTransp:_VeicTransp:_UF:TEXT")<>"U",oTransp:_VeicTransp:_UF:TEXT,"")
- EndIf
- If Type("oTransp:_Vol")<>"U"
- If ValType(oTransp:_Vol) == "A"
- nX := nPrivate
- nLenVol := Len(oTransp:_Vol)
- cMarca := ""
- aMarca := {}
- cNumeracao := ""
- aNumeracao := {}
- For nX := 1 to nLenVol
- nXAux := nX
- nVolume += IIF(!ValAtrib("oTransp:_Vol[nXAux]:_QVOL:TEXT")=="U",Val(oTransp:_Vol[nXAux]:_QVOL:TEXT),0)
- if !ValAtrib("oTransp:_Vol[nXAux]:_MARCA:TEXT") == "U" .and. !empty(oTransp:_Vol[nXAux]:_MARCA:TEXT)
- if aScan( aMarca, { |X| X == oTransp:_Vol[nXAux]:_MARCA:TEXT}) == 0
- aAdd( aMarca, oTransp:_Vol[nXAux]:_MARCA:TEXT )
- endif
- endif
- if !ValAtrib("oTransp:_Vol[nXAux]:_nVOL:TEXT") == "U" .and. !empty(oTransp:_Vol[nXAux]:_nVOL:TEXT)
- if aScan( aNumeracao, { |X| X == oTransp:_Vol[nXAux]:_nVOL:TEXT } ) == 0
- aAdd( aNumeracao, oTransp:_Vol[nXAux]:_nVOL:TEXT )
- endif
- endif
- Next nX
- if len(aMarca) == 1
- cMarca := aMarca[1]
- elseif len(aMarca) > 1
- cMarca := "Diversos"
- endif
- aSize(aMarca,0)
- if len(aNumeracao) == 1
- cNumeracao := aNumeracao[1]
- elseif len(aNumeracao) > 1
- cNumeracao := "Diversos"
- endif
- aSize(aNumeracao,0)
- if Type("oTransp:_Vol:_Marca") == "U"
- cMarca := NoChar(cMarca,lConverte)
- else
- cMarca := NoChar(oTransp:_Vol:_Marca:TEXT,lConverte)
- endif
- if !Type("oTransp:_Vol:_nVol:TEXT") == "U"
- cNumeracao := oTransp:_Vol:_nVol:TEXT
- endif
- aTransp[11] := AllTrim(str(nVolume))
- aTransp[12] := IIf(Type("oTransp:_Vol:_Esp")=="U","Diversos","")
- aTransp[13] := cMarca
- aTransp[14] := cNumeracao
- If Type("oTransp:_Vol[1]:_PesoB") <>"U"
- nPesoB := Val(oTransp:_Vol[1]:_PesoB:TEXT)
- aTransp[15] := AllTrim(str(nPesoB))
- EndIf
- If Type("oTransp:_Vol[1]:_PesoL") <>"U"
- nPesoL := Val(oTransp:_Vol[1]:_PesoL:TEXT)
- aTransp[16] := AllTrim(str(nPesoL))
- EndIf
- Else
- aTransp[11] := IIf(Type("oTransp:_Vol:_qVol:TEXT")<>"U",oTransp:_Vol:_qVol:TEXT,"")
- aTransp[12] := IIf(Type("oTransp:_Vol:_Esp")=="U","",oTransp:_Vol:_Esp:TEXT)
- aTransp[13] := IIf(Type("oTransp:_Vol:_Marca")=="U","",NoChar(oTransp:_Vol:_Marca:TEXT,lConverte))
- aTransp[14] := IIf(Type("oTransp:_Vol:_nVol:TEXT")<>"U",oTransp:_Vol:_nVol:TEXT,"")
- aTransp[15] := IIf(Type("oTransp:_Vol:_PesoB:TEXT")<>"U",oTransp:_Vol:_PesoB:TEXT,"")
- aTransp[16] := IIf(Type("oTransp:_Vol:_PesoL:TEXT")<>"U",oTransp:_Vol:_PesoL:TEXT,"")
- EndIf
- aTransp[13] := SubStr( aTransp[13], 1, 20)
- aTransp[14] := SubStr( aTransp[14], 1, 20)
- aTransp[15] := strTRan(aTransp[15],".",",")
- aTransp[16] := strTRan(aTransp[16],".",",")
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //覓olumes / Especie Nota de Saida �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If(MV_PAR04==2) .And. Empty(aTransp[12])
- If (SF2->(FieldPos("F2_ESPECI1")) <>0 .And. !Empty( SF2->(FieldGet(FieldPos( "F2_ESPECI1" ))) )) .Or.;
- (SF2->(FieldPos("F2_ESPECI2")) <>0 .And. !Empty( SF2->(FieldGet(FieldPos( "F2_ESPECI2" ))) )) .Or.;
- (SF2->(FieldPos("F2_ESPECI3")) <>0 .And. !Empty( SF2->(FieldGet(FieldPos( "F2_ESPECI3" ))) )) .Or.;
- (SF2->(FieldPos("F2_ESPECI4")) <>0 .And. !Empty( SF2->(FieldGet(FieldPos( "F2_ESPECI4" ))) ))
- aEspecie := {}
- aadd(aEspecie,SF2->F2_ESPECI1)
- aadd(aEspecie,SF2->F2_ESPECI2)
- aadd(aEspecie,SF2->F2_ESPECI3)
- aadd(aEspecie,SF2->F2_ESPECI4)
- cEsp := ""
- nx := 0
- For nE := 1 To Len(aEspecie)
- If !Empty(aEspecie[nE])
- nx ++
- cEsp := aEspecie[nE]
- EndIf
- Next
- cGuarda := ""
- If nx > 1
- cGuarda := "Diversos"
- Else
- cGuarda := cEsp
- EndIf
- If !Empty(cGuarda)
- aadd(aEspVol,{cGuarda,Iif(SF2->F2_PLIQUI>0,str(SF2->F2_PLIQUI),""),Iif(SF2->F2_PBRUTO>0, str(SF2->F2_PBRUTO),"")})
- Else
- /*
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡1
- //莧qui seguindo a mesma regra da cria誽o da TAG de Volumes no xml �
- //� caso n緌 esteja preenchida nenhuma das especies de Volume n緌 se�
- //� envia as informa踥es de volume. �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡1
- */
- aadd(aEspVol,{cGuarda,"",""})
- Endif
- Else
- aadd(aEspVol,{cGuarda,"",""})
- EndIf
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蛀specie Nota de Entrada �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If(MV_PAR04==1) .And. Empty(aTransp[12])
- dbSelectArea("SF1")
- dbSetOrder(1)
- If MsSeek(xFilial("SF1")+aNota[5]+aNota[4]+aNota[6]+aNota[7])
- If (SF1->(FieldPos("F1_ESPECI1")) <>0 .And. !Empty( SF1->(FieldGet(FieldPos( "F1_ESPECI1" ))) )) .Or.;
- (SF1->(FieldPos("F1_ESPECI2")) <>0 .And. !Empty( SF1->(FieldGet(FieldPos( "F1_ESPECI2" ))) )) .Or.;
- (SF1->(FieldPos("F1_ESPECI3")) <>0 .And. !Empty( SF1->(FieldGet(FieldPos( "F1_ESPECI3" ))) )) .Or.;
- (SF1->(FieldPos("F1_ESPECI4")) <>0 .And. !Empty( SF1->(FieldGet(FieldPos( "F1_ESPECI4" ))) ))
- aEspecie := {}
- aadd(aEspecie,SF1->F1_ESPECI1)
- aadd(aEspecie,SF1->F1_ESPECI2)
- aadd(aEspecie,SF1->F1_ESPECI3)
- aadd(aEspecie,SF1->F1_ESPECI4)
- cEsp := ""
- nx := 0
- For nE := 1 To Len(aEspecie)
- If !Empty(aEspecie[nE])
- nx ++
- cEsp := aEspecie[nE]
- EndIf
- Next
- cGuarda := ""
- If nx > 1
- cGuarda := "Diversos"
- Else
- cGuarda := cEsp
- EndIf
- If !Empty(cGuarda)
- aadd(aEspVol,{cGuarda,Iif(SF1->F1_PLIQUI>0,str(SF1->F1_PLIQUI),""),Iif(SF1->F1_PBRUTO>0, str(SF1->F1_PBRUTO),"")})
- Else
- /*
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡1
- //莧qui seguindo a mesma regra da cria誽o da TAG de Volumes no xml �
- //� caso n緌 esteja preenchida nenhuma das especies de Volume n緌 se�
- //� envia as informa踥es de volume. �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡1
- */
- aadd(aEspVol,{cGuarda,"",""})
- Endif
- Else
- aadd(aEspVol,{cGuarda,"",""})
- EndIf
- MsUnlock()
- DbSkip()
- EndIf
- EndIf
- //矬-----闡闡闡闡闡醴
- //袍ipo do frete �
- //斂闡闡�-----闡闡闡�
- dbSelectArea("SD2")
- dbSetOrder(3)
- MsSeek(xFilial("SD2")+SF2->F2_DOC+SF2->F2_SERIE+SF2->F2_CLIENTE+SF2->F2_LOJA)
- dbSelectArea("SC5")
- dbSetOrder(1)
- MsSeek(xFilial("SC5")+SD2->D2_PEDIDO)
- dbSelectArea("SF4")
- dbSetOrder(1)
- MsSeek(xFilial("SF4")+SD2->D2_TES)
- dbSelectArea("SF3")
- dbSetOrder(4)
- MsSeek(xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE)
- lArt488MG := Iif(SF4->(FIELDPOS("F4_CRLEIT"))>0,Iif(SF4->F4_CRLEIT == "1",.T.,.F.),.F.)
- lArt274SP := Iif(SF4->(FIELDPOS("F4_ART274"))>0,Iif(SF4->F4_ART274 $ "1S",.T.,.F.),.F.)
- If Type("oTransp:_ModFrete") <> "U"
- cModFrete := oTransp:_ModFrete:TEXT
- Else
- cModFrete := "1"
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro Dados do Produto / Servi蔞 �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- nLenDet := Len(oDet)
- If lMv_ItDesc
- For nX := 1 To nLenDet
- Aadd(aIndAux, {nX, SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),1,MAXITEMC)})
- Next
- aIndAux := aSort(aIndAux,,, { |x, y| x[2] < y[2] })
- For nX := 1 To nLenDet
- Aadd(aIndImp, aIndAux[nX][1] )
- Next
- EndIf
- For nZ := 1 To nLenDet
- If lMv_ItDesc
- nX := aIndImp[nZ]
- Else
- nX := nZ
- EndIf
- nPrivate := nX
- If lArt488MG .And. lUf_MG
- nVTotal := 0
- nVUnit := 0
- Else
- nVTotal := Val(oDet[nX]:_Prod:_vProd:TEXT)//-Val(IIF(Type("oDet[nPrivate]:_Prod:_vDesc")=="U","",oDet[nX]:_Prod:_vDesc:TEXT))
- nVUnit := Val(oDet[nX]:_Prod:_vUnCom:TEXT)
- EndIf
- nQtd := Val(oDet[nX]:_Prod:_qCom:TEXT)
- nBaseICM := 0
- nValICM := 0
- nValIPI := 0
- nPICM := 0
- nPIPI := 0
- oImposto := oDet[nX]
- cSitTrib := ""
- lPontilhado := .F.
- If ValAtrib("oImposto:_Imposto")<>"U"
- If ValAtrib("oImposto:_Imposto:_ICMS")<>"U"
- nLenSit := Len(aSitTrib)
- For nY := 1 To nLenSit
- nPrivate2 := nY
- If ValAtrib("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nPrivate2])<>"U" .Or. ValAtrib("oImposto:_Imposto:_ICMS:_ICMSST")<>"U"
- If ValAtrib("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nPrivate2]+":_VBC:TEXT")<>"U"
- nBaseICM := Val(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_VBC:TEXT"))
- nValICM := Val(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_vICMS:TEXT"))
- nPICM := Val(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_PICMS:TEXT"))
- ElseIf ValAtrib("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nPrivate2]+":_MOTDESICMS") <> "U" .And. ValAtrib("oImposto:_PROD:_VDESC:TEXT") <> "U" //SINIEF 25/12, efeitos a partir de 20.12.12
- If oNF:_INFNFE:_VERSAO:TEXT >= "3.10" .and. &("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_CST:TEXT") <> "40"
- If AllTrim(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_motDesICMS:TEXT")) == "7" .And. &("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_CST:TEXT") == "30"
- nValICM := 0
- Else
- nValICM := Val(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_vICMSDESON:TEXT"))
- EndIf
- Elseif &("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_CST:TEXT") <> "40"
- If AllTrim(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_motDesICMS:TEXT")) == "7" .And. &("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_CST:TEXT") == "30"
- nValICM := 0
- Else
- nValICM := Val(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_vICMS:TEXT"))
- EndIf
- EndIf
- EndIf
- If ValAtrib("oImposto:_Imposto:_ICMS:_ICMSST")<>"U" // Tratamento para 4.0
- cSitTrib := &("oImposto:_Imposto:_ICMS:_ICMSST:_ORIG:TEXT")
- cSitTrib += &("oImposto:_Imposto:_ICMS:_ICMSST:_CST:TEXT")
- Else
- cSitTrib := &("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_ORIG:TEXT")
- cSitTrib += &("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_CST:TEXT")
- EndIf
- EndIf
- Next nY
- //Tratamento para o ICMS para optantes pelo Simples Nacional
- If ValAtrib("oEmitente:_CRT") <> "U" .And. oEmitente:_CRT:TEXT == "1"
- nLenSit := Len(aSitSN)
- For nY := 1 To nLenSit
- nPrivate2 := nY
- If ValAtrib("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nPrivate2])<>"U"
- If ValAtrib("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nPrivate2]+":_VBC:TEXT")<>"U"
- nBaseICM := Val(&("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nY]+":_VBC:TEXT"))
- nValICM := Val(&("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nY]+":_vICMS:TEXT"))
- nPICM := Val(&("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nY]+":_PICMS:TEXT"))
- EndIf
- cSitTrib := &("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nY]+":_ORIG:TEXT")
- cSitTrib += &("oImposto:_Imposto:_ICMS:_ICMSSN"+aSitSN[nY]+":_CSOSN:TEXT")
- EndIf
- Next nY
- EndIf
- EndIf
- If ValAtrib("oImposto:_Imposto:_IPI")<>"U"
- If ValAtrib("oImposto:_Imposto:_IPI:_IPITrib:_vIPI:TEXT")<>"U"
- nValIPI := Val(oImposto:_Imposto:_IPI:_IPITrib:_vIPI:TEXT)
- EndIf
- If ValAtrib("oImposto:_Imposto:_IPI:_IPITrib:_pIPI:TEXT")<>"U"
- nPIPI := Val(oImposto:_Imposto:_IPI:_IPITrib:_pIPI:TEXT)
- EndIf
- EndIf
- EndIf
- nMaxCod := MaxCod(oDet[nX]:_Prod:_cProd:TEXT, MAXCODPRD)
- // Tratamento para quebrar os digitos dos valores
- aAux := {}
- AADD(aAux, AllTrim(TransForm(nQtd,TM(nQtd,TamSX3("D2_QUANT")[1],TamSX3("D2_QUANT")[2]))))
- AADD(aAux, AllTrim(TransForm(nVUnit,TM(nVUnit,TamSX3("D2_PRCVEN")[1],TamSX3("D2_PRCVEN")[2]))))
- AADD(aAux, AllTrim(TransForm(nVTotal,TM(nVTotal,TamSX3("D2_TOTAL")[1],TamSX3("D2_TOTAL")[2]))))
- AADD(aAux, AllTrim(TransForm(nBaseICM,TM(nBaseICM,TamSX3("D2_BASEICM")[1],TamSX3("D2_BASEICM")[2]))))
- AADD(aAux, AllTrim(TransForm(nValICM,TM(nValICM,TamSX3("D2_VALICM")[1],TamSX3("D2_VALICM")[2]))))
- AADD(aAux, AllTrim(TransForm(nValIPI,TM(nValIPI,TamSX3("D2_VALIPI")[1],TamSX3("D2_BASEIPI")[2]))))
- aadd(aItens,{;
- SubStr(oDet[nX]:_Prod:_cProd:TEXT,1,nMaxCod),;
- SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),1,nMaxDes),;
- IIF(ValAtrib("oDet[nPrivate]:_Prod:_NCM")=="U","",oDet[nX]:_Prod:_NCM:TEXT),;
- cSitTrib,;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- oDet[nX]:_Prod:_uCom:TEXT,;
- SubStr(aAux[1], 1, PosQuebrVal(aAux[1])),;
- SubStr(aAux[2], 1, PosQuebrVal(aAux[2])),;
- SubStr(aAux[3], 1, PosQuebrVal(aAux[3])),;
- SubStr(aAux[4], 1, PosQuebrVal(aAux[4])),;
- SubStr(aAux[5], 1, PosQuebrVal(aAux[5])),;
- SubStr(aAux[6], 1, PosQuebrVal(aAux[6])),;
- AllTrim(TransForm(nPICM,"@r 99.99%")),;
- AllTrim(TransForm(nPIPI,"@r 99.99%"));
- })
- // Tratamento somente para o estado de MG, para totalizar por CFOP conforme RICMS-MG
- If lUf_MG
- aadd(aItensAux,{;
- SubStr(oDet[nX]:_Prod:_cProd:TEXT,1,nMaxCod),;
- SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),1,nMaxDes),;
- IIF(ValAtrib("oDet[nPrivate]:_Prod:_NCM")=="U","",oDet[nX]:_Prod:_NCM:TEXT),;
- cSitTrib,;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- oDet[nX]:_Prod:_uCom:TEXT,;
- SubStr(aAux[1], 1, PosQuebrVal(aAux[1])),;
- SubStr(aAux[2], 1, PosQuebrVal(aAux[2])),;
- SubStr(aAux[3], 1, PosQuebrVal(aAux[3])),;
- SubStr(aAux[4], 1, PosQuebrVal(aAux[4])),;
- SubStr(aAux[5], 1, PosQuebrVal(aAux[5])),;
- SubStr(aAux[6], 1, PosQuebrVal(aAux[6])),;
- AllTrim(TransForm(nPICM,"@r 99.99%")),;
- AllTrim(TransForm(nPIPI,"@r 99.99%")),;
- StrZero( ++nSequencia, 4 ),;
- nVTotal;
- })
- Endif
-
- /*------------------------------------------------------------
- Tratativa para caso haja quebra de linha em algum quadro do item atual
- a impressao finalize na linha seguinte, antes de iniciar a impressao dos pr闛. itens.
- ------------------------------------------------------------*/
- cAuxItem := AllTrim(SubStr(oDet[nX]:_Prod:_cProd:TEXT,nMaxCod+1))
- cAux := AllTrim(SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),(nMaxDes+1)))
- aAux[1] := SubStr(aAux[1], PosQuebrVal(aAux[1]) + 1)
- aAux[2] := SubStr(aAux[2], PosQuebrVal(aAux[2]) + 1)
- aAux[3] := SubStr(aAux[3], PosQuebrVal(aAux[3]) + 1)
- aAux[4] := SubStr(aAux[4], PosQuebrVal(aAux[4]) + 1)
- aAux[5] := SubStr(aAux[5], PosQuebrVal(aAux[5]) + 1)
- aAux[6] := SubStr(aAux[6], PosQuebrVal(aAux[6]) + 1)
- While !Empty(cAux) .Or. !Empty(cAuxItem) .Or. !Empty(aAux[1]) .Or. !Empty(aAux[2]) .Or. !Empty(aAux[3]) .Or. !Empty(aAux[4]) .Or. !Empty(aAux[5]) .Or. !Empty(aAux[6])
- nMaxCod := MaxCod(cAuxItem, MAXCODPRD)
- aadd(aItens,{;
- SubStr(cAuxItem,1,nMaxCod),;
- SubStr(cAux,1,nMaxDes),;
- "",;
- "",;
- "",;
- "",;
- SubStr(aAux[1], 1, PosQuebrVal(aAux[1])),;
- SubStr(aAux[2], 1, PosQuebrVal(aAux[2])),;
- SubStr(aAux[3], 1, PosQuebrVal(aAux[3])),;
- SubStr(aAux[4], 1, PosQuebrVal(aAux[4])),;
- SubStr(aAux[5], 1, PosQuebrVal(aAux[5])),;
- SubStr(aAux[6], 1, PosQuebrVal(aAux[6])),;
- "",;
- "";
- })
- If lUf_MG
- aadd(aItensAux,{;
- SubStr(cAuxItem,1,nMaxCod),;
- SubStr(cAux,1,nMaxDes),;
- "",;
- "",;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- "",;
- SubStr(aAux[1], 1, PosQuebrVal(aAux[1])),;
- SubStr(aAux[2], 1, PosQuebrVal(aAux[2])),;
- SubStr(aAux[3], 1, PosQuebrVal(aAux[3])),;
- SubStr(aAux[4], 1, PosQuebrVal(aAux[4])),;
- SubStr(aAux[5], 1, PosQuebrVal(aAux[5])),;
- SubStr(aAux[6], 1, PosQuebrVal(aAux[6])),;
- "",;
- "",;
- StrZero( ++nSequencia, 4 ),;
- 0;
- })
- Endif
- // Popula as informa踥es para as pr闛imas linhas adicionais
- cAux := SubStr(cAux,(nMaxDes+1))
- cAuxItem := SubStr(cAuxItem,nMaxCod+1)
- aAux[1] := SubStr(aAux[1], PosQuebrVal(aAux[1]) + 1)
- aAux[2] := SubStr(aAux[2], PosQuebrVal(aAux[2]) + 1)
- aAux[3] := SubStr(aAux[3], PosQuebrVal(aAux[3]) + 1)
- aAux[4] := SubStr(aAux[4], PosQuebrVal(aAux[4]) + 1)
- aAux[5] := SubStr(aAux[5], PosQuebrVal(aAux[5]) + 1)
- aAux[6] := SubStr(aAux[6], PosQuebrVal(aAux[6]) + 1)
- lPontilhado := .T.
- EndDo
- // Tratamento quando houver diferen蓷 entre as unidades uCom e uTrib ( SEFAZ MT )
- If ( oDet[nX]:_Prod:_uTrib:TEXT <> oDet[nX]:_Prod:_uCom:TEXT )
- lPontilhado := IIf( nLenDet > 1, .T., lPontilhado )
- cUnTrib := oDet[nX]:_Prod:_uTrib:TEXT
- nQtdTrib := Val(oDet[nX]:_Prod:_qTrib:TEXT)
- nVUnitTrib := Val(oDet[nX]:_Prod:_vUnTrib:TEXT)
- aAuxCom := {}
- AADD(aAuxCom, AllTrim(TransForm(nQtdTrib,TM(nQtdTrib,TamSX3("D2_QUANT")[1],TamSX3("D2_QUANT")[2]))))
- AADD(aAuxCom, AllTrim(TransForm(nVUnitTrib,TM(nVUnitTrib,TamSX3("D2_PRCVEN")[1],TamSX3("D2_PRCVEN")[2]))))
- If lUf_MG
- aadd(aItensAux,{;
- "",;
- "",;
- "",;
- "",;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- cUnTrib,;
- SubStr(aAuxCom[1], 1, PosQuebrVal(aAuxCom[1])),;
- SubStr(aAuxCom[2], 1, PosQuebrVal(aAuxCom[2])),;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- StrZero( ++nSequencia, 4 ),;
- 0;
- })
- else
- aadd(aItens,{;
- "",;
- "",;
- "",;
- "",;
- "",;
- cUnTrib,;
- SubStr(aAuxCom[1], 1, PosQuebrVal(aAuxCom[1])),;
- SubStr(aAuxCom[2], 1, PosQuebrVal(aAuxCom[2])),;
- "",;
- "",;
- "",;
- "",;
- "",;
- "";
- })
- endif
- aAuxCom[1] := SubStr(aAuxCom[1], PosQuebrVal(aAuxCom[1]) + 1) // Quantidade - D2_QUANT
- aAuxCom[2] := SubStr(aAuxCom[2], PosQuebrVal(aAuxCom[2]) + 1) // Valor Unitario - D2_PRCVEN
-
- /*------------------------------------------------------------
- Quebra de linha para os quadros "Quant." e "V.unit嫫io"
- da 2a. unidade de medida
- ------------------------------------------------------------*/
- While !Empty(aAuxCom[1]) .or. !Empty(aAuxCom[2])
- If lUf_MG
- aadd(aItensAux,{;
- "",;
- "",;
- "",;
- "",;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- "",;
- SubStr(aAuxCom[1], 1, PosQuebrVal(aAuxCom[1])),;
- SubStr(aAuxCom[2], 1, PosQuebrVal(aAuxCom[2])),;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- StrZero( ++nSequencia, 4 ),;
- 0;
- })
- endif
- aadd(aItens,{;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- SubStr(aAuxCom[1], 1, PosQuebrVal(aAuxCom[1])),;
- SubStr(aAuxCom[2], 1, PosQuebrVal(aAuxCom[2])),;
- "",;
- "",;
- "",;
- "",;
- "",;
- "";
- })
- aAuxCom[1] := SubStr(aAuxCom[1], PosQuebrVal(aAuxCom[1]) + 1) // Quantidade - D2_QUANT
- aAuxCom[2] := SubStr(aAuxCom[2], PosQuebrVal(aAuxCom[2]) + 1) // Valor Unitario - D2_PRCVEN
- EndDo
- Endif
- If (ValAtrib("oNf:_infnfe:_det[nPrivate]:_Infadprod:TEXT") <> "U" .Or. ValAtrib("oNf:_infnfe:_det:_Infadprod:TEXT") <> "U") .And. ( lImpAnfav .Or. lImpInfAd )
- If at("<", AllTrim(SubStr(oDet[nX]:_Infadprod:TEXT,1))) <> 0
- cAux := stripTags(AllTrim(SubStr(oDet[nX]:_Infadprod:TEXT,1)), .T.) + " "
- cAux += stripTags(AllTrim(SubStr(oDet[nX]:_Infadprod:TEXT,1)), .F.)
- else
- cAux := stripTags(AllTrim(SubStr(oDet[nX]:_Infadprod:TEXT,1)), .T.)
- endIf
- While !Empty(cAux)
- aadd(aItens,{;
- "",;
- SubStr(cAux,1,nMaxDes),;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "";
- })
- If lUf_MG
- aadd(aItensAux,{;
- "",;
- SubStr(cAux,1,nMaxDes),;
- "",;
- "",;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- StrZero( ++nSequencia, 4 ),;
- 0;
- })
- Endif
- cAux := SubStr(cAux,(nMaxDes + 1))
- lPontilhado := .T.
- EndDo
- EndIf
- If lPontilhado
- aadd(aItens,{;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-";
- })
- If lUf_MG
- aadd(aItensAux,{;
- "-",;
- "-",;
- "-",;
- "-",;
- oDet[nX]:_Prod:_CFOP:TEXT,;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- StrZero( ++nSequencia, 4 ),;
- 0;
- })
- Endif
- EndIf
- Next nZ
- //----------------------------------------------------------------------------------
- // Tratamento somente para o estado de MG, para totalizar por CFOP conforme RICMS-MG
- //----------------------------------------------------------------------------------
- If lUf_MG
- If Len( aItensAux ) > 0
- aItensAux := aSort( aItensAux,,, { |x,y| x[5]+x[15] < y[5]+y[15] } )
- nSubTotal := 0
- aItens := {}
- cCfop := aItensAux[1,5]
- cCfopAnt := aItensAux[1,5]
- For nX := 1 To Len( aItensAux )
- aArray := ARRAY(14)
- aArray[01] := aItensAux[nX,01]
- aArray[02] := aItensAux[nX,02]
- aArray[03] := aItensAux[nX,03]
- aArray[04] := aItensAux[nX,04]
- If Empty( aItensAux[nX,03] ) .Or. aItensAux[nX,03] == "-"
- aArray[05] := ""
- Else
- aArray[05] := aItensAux[nX,05]
- Endif
- aArray[06] := aItensAux[nX,06]
- aArray[07] := aItensAux[nX,07]
- aArray[08] := aItensAux[nX,08]
- aArray[09] := aItensAux[nX,09]
- aArray[10] := aItensAux[nX,10]
- aArray[11] := aItensAux[nX,11]
- aArray[12] := aItensAux[nX,12]
- aArray[13] := aItensAux[nX,13]
- aArray[14] := aItensAux[nX,14]
- If aItensAux[nX,5] == cCfop
- aadd( aItens, {;
- aArray[01],;
- aArray[02],;
- aArray[03],;
- aArray[04],;
- aArray[05],;
- aArray[06],;
- aArray[07],;
- aArray[08],;
- aArray[09],;
- aArray[10],;
- aArray[11],;
- aArray[12],;
- aArray[13],;
- aArray[14];
- } )
- nSubTotal += aItensAux[nX,16]
- Else
- aadd(aItens,{;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-";
- })
- aadd(aItens,{;
- "",;
- "SUB-TOTAL",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- AllTrim(TransForm(nSubTotal,TM(nSubTotal,TamSX3("D2_TOTAL")[1],TamSX3("D2_TOTAL")[2]))),;
- "",;
- "",;
- "",;
- "",;
- "";
- })
- aadd(aItens,{;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "";
- })
- cCfop := aItensAux[nX,05]
- nSubTotal := aItensAux[nX,16]
- aadd( aItens, {;
- aArray[01],;
- aArray[02],;
- aArray[03],;
- aArray[04],;
- aArray[05],;
- aArray[06],;
- aArray[07],;
- aArray[08],;
- aArray[09],;
- aArray[10],;
- aArray[11],;
- aArray[12],;
- aArray[13],;
- aArray[14];
- } )
- Endif
- Next nX
- If cCfopAnt <> cCfop .And. nSubTotal > 0
- aadd(aItens,{;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-";
- })
- aadd(aItens,{;
- "",;
- "SUB-TOTAL",;
- "",;
- "",;
- "",;
- "",;
- "",;
- "",;
- AllTrim(TransForm(nSubTotal,TM(nSubTotal,TamSX3("D2_TOTAL")[1],TamSX3("D2_TOTAL")[2]))),;
- "",;
- "",;
- "",;
- "",;
- "";
- })
- Endif
- Endif
- Endif
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro ISSQN �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aISSQN := {"","","",""}
- If Type("oEmitente:_IM:TEXT")<>"U"
- aISSQN[1] := oEmitente:_IM:TEXT
- EndIf
- If Type("oTotal:_ISSQNtot")<>"U"
- aISSQN[2] := Transform(Val(oTotal:_ISSQNtot:_vServ:TEXT),"@e 999,999,999.99")
- aISSQN[3] := Transform(Val(oTotal:_ISSQNtot:_vBC:TEXT),"@e 999,999,999.99")
- If Type("oTotal:_ISSQNtot:_vISS:TEXT") <> "U"
- aISSQN[4] := Transform(Val(oTotal:_ISSQNtot:_vISS:TEXT),"@e 999,999,999.99")
- EndIf
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro de informacoes complementares �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If Type("oIdent:_DHCONT:TEXT")<>"U"
- cDhCont:= oIdent:_DHCONT:TEXT
- EndIf
- If Type("oIdent:_XJUST:TEXT")<>"U"
- cXJust:=oIdent:_XJUST:TEXT
- EndIf
- aMensagem := {}
- If Type("oIdent:_tpAmb:TEXT")<>"U" .And. oIdent:_tpAmb:TEXT=="2"
- cAux := "DANFE emitida no ambiente de homologa誽o - SEM VALOR FISCAL"
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- If Type("oNF:_InfNfe:_infAdic:_infAdFisco:TEXT")<>"U"
- cAux := oNF:_InfNfe:_infAdic:_infAdFisco:TEXT
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- If !Empty(cCodAutSef) .AND. oIdent:_tpEmis:TEXT<>"4"
- cAux := "Protocolo: "+cCodAutSef
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- ElseIf !Empty(cCodAutSef) .AND. oIdent:_tpEmis:TEXT=="4" .AND. cModalidade $ "1"
- cAux := "Protocolo: "+cCodAutSef
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- cAux := "DANFE emitida anteriormente em conting瘽cia DPEC"
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- If !Empty(cCodAutDPEC) .And. oIdent:_tpEmis:TEXT=="4"
- cAux := "N𤦤ero de Registro DPEC: "+cCodAutDPEC
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- If (Type("oIdent:_tpEmis:TEXT")<>"U" .And. !oIdent:_tpEmis:TEXT$"1,4")
- cAux := "DANFE emitida em conting瘽cia"
- If !Empty(cXJust) .and. !Empty(cDhCont) .and. oIdent:_tpEmis:TEXT$"6,7"// SVC-AN e SVC-RS Deve ser impresso o xjust e dhcont
- cAux += " Motivo da ado誽o da conting瘽cia: "+cXJust+ " Data e hora de in獳io de utiliza誽o: "+cDhCont
- EndIf
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- ElseIf (!Empty(cModalidade) .And. !cModalidade $ "1,4,5") .And. Empty(cCodAutSef)
- cAux := "DANFE emitida em conting瘽cia devido a problemas t嶰nicos - ser� necess嫫ia a substitui誽o."
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- ElseIf (!Empty(cModalidade) .And. cModalidade $ "5" .And. oIdent:_tpEmis:TEXT=="4")
- cAux := "DANFE impresso em conting瘽cia"
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- cAux := "DPEC regularmento recebido pela Receita Federal do Brasil."
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- ElseIf (Type("oIdent:_tpEmis:TEXT")<>"U" .And. oIdent:_tpEmis:TEXT$"5")
- cAux := "DANFE emitida em conting瘽cia FS-DA"
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- If Type("oNF:_InfNfe:_infAdic:_infCpl:TEXT")<>"U"
- If at("<", oNF:_InfNfe:_infAdic:_InfCpl:TEXT) <> 0
- cAux := stripTags(oNF:_InfNfe:_infAdic:_InfCpl:TEXT, .T.) + " "
- cAux += stripTags(oNF:_InfNfe:_infAdic:_InfCpl:TEXT, .F.)
- else
- cAux := stripTags(oNF:_InfNfe:_infAdic:_InfCpl:TEXT, .T.)
- endIf
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- /*
- dbSelectArea("SF1")
- dbSetOrder(1)
- If MsSeek(xFilial("SF1")+aNota[5]+aNota[4]+aNota[6]+aNota[7]) .And. SF1->(FieldPos("F1_FIMP"))<>0
- If SF1->F1_TIPO == "D"
- If Type("oNF:_InfNfe:_Total:_icmsTot:_VIPI:TEXT")<>"U"
- cAux := "Valor do Ipi : " + oNF:_InfNfe:_Total:_icmsTot:_VIPI:TEXT
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- EndIf
- MsUnlock()
- DbSkip()
- EndIf
- */
- If MV_PAR04 == 2
- //impressao do valor do desconto calculdo conforme decreto 43.080/02 RICMS-MG
- nRecSF3 := SF3->(Recno())
- SF3->(dbSetOrder(4))
- SF3->(MsSeek(xFilial("SF3")+SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE))
- While !SF3->(Eof()) .And. SF2->F2_CLIENTE+SF2->F2_LOJA+SF2->F2_DOC+SF2->F2_SERIE == SF3->F3_CLIEFOR+SF3->F3_LOJA+SF3->F3_NFISCAL+SF3->F3_SERIE
- If SF3->(FieldPos("F3_DS43080"))<>0 .And. SF3->F3_DS43080 > 0
- cAux := "Base de calc.reduzida conf.Art.43, Anexo IV, Parte 1, Item 3 do RICMS-MG. Valor da deducao ICMS R$ "
- cAux += Alltrim(Transform(SF3->F3_DS43080,"@e 9,999,999,999,999.99")) + " ref.reducao de base de calculo"
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- SF3->(dbSkip())
- EndDo
- SF3->(dbGoTo(nRecSF3))
- ElseIf MV_PAR04 == 1
- //impressao do valor do desconto calculdo conforme decreto 43.080/02 RICMS-MG
- dbSelectArea("SF1")
- dbSetOrder(1)
- IF MsSeek(xFilial("SF1")+aNota[5]+aNota[4]+aNota[6]+aNota[7])
- dbSelectArea("SF3")
- dbSetOrder(4)
- If MsSeek(xFilial("SF3")+SF1->F1_FORNECE+SF1->F1_LOJA+SF1->F1_DOC+SF1->F1_SERIE)
- If SF3->(FieldPos("F3_DS43080"))<>0 .And. SF3->F3_DS43080 > 0
- cAux := "Base de calc.reduzida conf.Art.43, Anexo IV, Parte 1, Item 3 do RICMS-MG. Valor da deducao ICMS R$ "
- cAux += Alltrim(Transform(SF3->F3_DS43080,"@ze 9,999,999,999,999.99")) + " ref.reducao de base de calculo"
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- EndIf
- EndIf
- EndIf
- EndIF
- For Nx := 1 to Len(aMensagem)
- NoChar(aMensagem[Nx],lConverte)
- Next
- If Type("oNF:_INFNFE:_IDE:_NFREF")<>"U"
- If Type("oNF:_INFNFE:_IDE:_NFREF") == "A"
- aInfNf := oNF:_INFNFE:_IDE:_NFREF
- Else
- aInfNf := {oNF:_INFNFE:_IDE:_NFREF}
- EndIf
- For nX := 1 to Len(aMensagem)
- If "ORIGINAL"$ Upper(aMensagem[nX])
- lNFori2 := .F.
- EndIf
- Next Nx
- cAux1 := ""
- cAux2 := ""
- For Nx := 1 to Len(aInfNf)
- If ValAtrib("aInfNf["+Str(nX)+"]:_REFNFE:TEXT")<>"U" .And. !AllTrim(aInfNf[nx]:_REFNFE:TEXT)$cAux1
- If !"CHAVE"$Upper(cAux1)
- If "65" $ substr (aInfNf[nx]:_REFNFE:TEXT,21,2)
- cAux1 += "Chave de acesso da NFC-E referenciada: "
- Else
- cAux1 += "Chave de acesso da NF-E referenciada: "
- Endif
- EndIf
- cAux1 += aInfNf[nx]:_REFNFE:TEXT+","
- ElseIf ValAtrib("aInfNf["+Str(nX)+"]:_REFNF:_NNF:TEXT")<>"U" .And. !AllTrim(aInfNf[nx]:_REFNF:_NNF:TEXT)$cAux2 .And. lNFori2
- If !"ORIGINAL"$Upper(cAux2)
- cAux2 += " Numero da nota original: "
- EndIf
- cAux2 += aInfNf[nx]:_REFNF:_NNF:TEXT+","
- EndIf
- Next
- cAux := ""
- If !Empty(cAux1)
- cAux1 := Left(cAux1,Len(cAux1)-1)
- cAux += cAux1
- EndIf
- If !Empty(cAux2)
- cAux2 := Left(cAux2,Len(cAux2)-1)
- cAux += Iif(!Empty(cAux),CRLF,"")+cAux2
- EndIf
- While !Empty(cAux)
- aadd(aMensagem,SubStr(cAux,1,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN) - 1, MAXMENLIN)))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, EspacoAt(cAux, MAXMENLIN), MAXMENLIN) + 1)
- EndDo
- For Nx := 1 to Len(aMensagem)
- NoChar(aMensagem[Nx],lConverte)
- Next
- EndIf
- //被uadro "RESERVADO AO FISCO" �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aResFisco := {}
- nBaseIcm := 0
- If GetNewPar("MV_BCREFIS",.F.) .And. SuperGetMv("MV_ESTADO")$"PR"
- If Val(&("oTotal:_ICMSTOT:_VBCST:TEXT")) <> 0
- cAux := "Substitui誽o Tribut嫫ia: Art. 471, II e �1� do RICMS/PR: "
- nLenDet := Len(oDet)
- For nX := 1 To nLenDet
- oImposto := oDet[nX]
- If ValAtrib("oImposto:_Imposto")<>"U"
- If ValAtrib("oImposto:_Imposto:_ICMS")<>"U"
- nLenSit := Len(aSitTrib)
- For nY := 1 To nLenSit
- nPrivate2 := nY
- If ValAtrib("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nPrivate2])<>"U"
- If ValAtrib("oImposto:_IMPOSTO:_ICMS:_ICMS"+aSitTrib[nPrivate2]+":_VBCST:TEXT")<>"U"
- nBaseIcm := Val(&("oImposto:_Imposto:_ICMS:_ICMS"+aSitTrib[nY]+":_VBCST:TEXT"))
- cAux += oDet[nX]:_PROD:_CPROD:TEXT + ": BCICMS-ST R$" + AllTrim(TransForm(nBaseICM,TM(nBaseICM,TamSX3("D2_BASEICM")[1],TamSX3("D2_BASEICM")[2]))) + " / "
- Endif
- Endif
- Next nY
- Endif
- Endif
- Next nX
- Endif
- While !Empty(cAux)
- aadd(aResFisco,SubStr(cAux,1,60))
- cAux := SubStr(cAux,IIf(EspacoAt(cAux, MAXMENLIN) > 1, 59, MAXMENLIN) +2)
- EndDo
- Endif
- If !Empty(cMsgRet)
- aMsgRet := StrTokArr( cMsgRet, "|")
- aEval( aMsgRet, {|x| aadd( aResFisco, alltrim(x) ) } )
- endif
- /*
- Calculo do numero de folhas
- */
- nFolhas := 1
- nLenItens := Len(aItens) - nMaxItem // Todos os produtos/servi蔞s excluindo a primeira p墔ina
- nMsgCompl := Len(aMensagem) - MAXMSG // Todas as mensagens complementares excluindo a primeira p墔ina
- lFlag := .T.
- lVerso := MV_PAR05 == 1
- While lFlag
- // Caso existam produtos/servi蔞s e mensagens complementares a serem escritas
- If nLenItens > 0 .And. nMsgCompl > 0
- nFolhas++
- If lVerso .And. (nFolhas % 2) == 0 // Frente e verso e p墔ina par
- nLenItens -= MAXITEMP3
- Else
- nLenItens -= MAXITEMP2
- nMsgCompl -= MAXMSG
- EndIf
- // Caso existam apenas mensagens complementares a serem escritas
- ElseIf nLenItens <= 0 .And. nMsgCompl > 0
- nFolhas++
- nMsgCompl -= MAXITEMP2
- // Caso existam apenas produtos/servi蔞s a serem escritos
- ElseIf nLenItens > 0 .And. nMsgCompl <= 0
- nFolhas++
- If lVerso .And. (nFolhas % 2) == 0 // Frente e verso e p墔ina par
- nLenItens -= MAXITEMP3
- Else
- nLenItens -= MAXITEMP2F
- EndIf
- Else
- lFlag := .F.
- EndIf
- EndDo
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蛆nicializacao do objeto grafico �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If oDanfe == Nil
- lPreview := .T.
- oDanfe := FWMSPrinter():New("DANFE", IMP_SPOOL)
- oDanfe:SetPortrait()
- oDanfe:Setup()
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蛆nicializacao da pagina do objeto grafico �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- oDanfe:StartPage()
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蛇efinicao do Box - Recibo de entrega �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- oDanfe:Box(000,000,010,501)
- oDanfe:Say(006, 002, "RECEBEMOS DE "+NoChar(oEmitente:_xNome:Text,lConverte)+" OS PRODUTOS CONSTANTES DA NOTA FISCAL INDICADA AO LADO", oFont07:oFont)
- oDanfe:Box(009,000,037,101)
- oDanfe:Say(017, 002, "DATA DE RECEBIMENTO", oFont07N:oFont)
- oDanfe:Box(009,100,037,500)
- oDanfe:Say(017, 102, "IDENTIFICAデO E ASSINATURA DO RECEBEDOR", oFont07N:oFont)
- oDanfe:Box(000,500,037,603)
- oDanfe:Say(007, 542, iif(lNFCE,"NFC-e","NF-e"), oFont08N:oFont)
- oDanfe:Say(017, 510, "N. "+StrZero(Val(oIdent:_NNf:Text),9), oFont08:oFont)
- oDanfe:Say(027, 510, "S仂IE "+SubStr(oIdent:_Serie:Text,1,3), oFont08:oFont)
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro 1 IDENTIFICACAO DO EMITENTE �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- oDanfe:Box(042,000,137,250)
- oDanfe:Say(052,096, "Identifica誽o do emitente",oFont12N:oFont)
- nLinCalc := 065
- cStrAux := AllTrim(NoChar(oEmitente:_xNome:Text,lConverte))
- nForTo := Len(cStrAux)/24
- nForTo := Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1,Round(nForTo,0))
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*24)+1),24), oFont12N:oFont )
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xLgr:Text,lConverte))+", "+AllTrim(oEmitente:_EnderEmit:_Nro:Text)
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- If Type("oEmitente:_EnderEmit:_xCpl") <> "U"
- cStrAux := "Complemento: "+AllTrim(NoChar(oEmitente:_EnderEmit:_xCpl:TEXT,lConverte))
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(oEmitente:_EnderEmit:_xBairro:Text)
- If Type("oEmitente:_EnderEmit:_Cep")<>"U"
- cStrAux += " Cep:"+TransForm(oEmitente:_EnderEmit:_Cep:Text,"@r 99999-999")
- EndIf
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- oDanfe:Say(nLinCalc,096, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,096, "Fone: "+IIf(Type("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- Else
- oDanfe:Say(nLinCalc,096, NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte)+" Cep:"+TransForm(IIF(Type("oEmitente:_EnderEmit:_Cep")=="U","",oEmitente:_EnderEmit:_Cep:Text),"@r 99999-999"),oFont08N:oFont)
- nLinCalc+=10
- oDanfe:Say(nLinCalc,096, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,096, "Fone: "+IIf(Type("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- EndIf
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //被uadro 2 �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- oDanfe:Box(042,248,137,351)
- oDanfe:Say(055,275, "DANFE",oFont18N:oFont)
- oDanfe:Say(065,258, "DOCUMENTO AUXILIAR DA",oFont07:oFont)
- if lNFCE
- oDanfe:Say(075,258, "NOTA FISCAL DE CONSUMIDOR",oFont07:oFont)
- else
- oDanfe:Say(075,258, "NOTA FISCAL ELETR偡ICA",oFont07:oFont)
- endif
- oDanfe:Say(085,266, "0-ENTRADA",oFont08:oFont)
- oDanfe:Say(095,266, "1-SA沝A" ,oFont08:oFont)
- oDanfe:Box(078,315,095,325)
- oDanfe:Say(089,318, oIdent:_TpNf:Text,oFont08N:oFont)
- oDanfe:Say(110,255,"N. "+StrZero(Val(oIdent:_NNf:Text),9),oFont10N:oFont)
- oDanfe:Say(120,255,"S仂IE "+SubStr(oIdent:_Serie:Text,1,3),oFont10N:oFont)
- oDanfe:Say(130,255,"FOLHA "+StrZero(nFolha,2)+"/"+StrZero(nFolhas,2),oFont10N:oFont)
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //袈reenchimento do Array de UF �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- aadd(aUF,{"RO","11"})
- aadd(aUF,{"AC","12"})
- aadd(aUF,{"AM","13"})
- aadd(aUF,{"RR","14"})
- aadd(aUF,{"PA","15"})
- aadd(aUF,{"AP","16"})
- aadd(aUF,{"TO","17"})
- aadd(aUF,{"MA","21"})
- aadd(aUF,{"PI","22"})
- aadd(aUF,{"CE","23"})
- aadd(aUF,{"RN","24"})
- aadd(aUF,{"PB","25"})
- aadd(aUF,{"PE","26"})
- aadd(aUF,{"AL","27"})
- aadd(aUF,{"MG","31"})
- aadd(aUF,{"ES","32"})
- aadd(aUF,{"RJ","33"})
- aadd(aUF,{"SP","35"})
- aadd(aUF,{"PR","41"})
- aadd(aUF,{"SC","42"})
- aadd(aUF,{"RS","43"})
- aadd(aUF,{"MS","50"})
- aadd(aUF,{"MT","51"})
- aadd(aUF,{"GO","52"})
- aadd(aUF,{"DF","53"})
- aadd(aUF,{"SE","28"})
- aadd(aUF,{"BA","29"})
- aadd(aUF,{"EX","99"})
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蚯ogotipo �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If lMv_Logod
- cGrpCompany := AllTrim(FWGrpCompany())
- cCodEmpGrp := AllTrim(FWCodEmp())
- cUnitGrp := AllTrim(FWUnitBusiness())
- cFilGrp := AllTrim(FWFilial())
- If !Empty(cUnitGrp)
- cDescLogo := cGrpCompany + cCodEmpGrp + cUnitGrp + cFilGrp
- Else
- cDescLogo := cEmpAnt + cFilAnt
- EndIf
- cLogoD := GetSrvProfString("Startpath","") + "DANFE" + cDescLogo + ".BMP"
- If !File(cLogoD)
- cLogoD := GetSrvProfString("Startpath","") + "DANFE" + cEmpAnt + ".BMP"
- If !File(cLogoD)
- lMv_Logod := .F.
- EndIf
- EndIf
- EndIf
- If nfolha==1
- If lMv_Logod
- oDanfe:SayBitmap(045,003,cLogoD,070,070)
- Else
- oDanfe:SayBitmap(045,003,cLogo,070,070)
- EndIF
- Endif
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //彪odigo de barra �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- oDanfe:Box(042,350,088,603)
- oDanfe:Box(075,350,110,603)
- oDanfe:Say(095,355,TransForm(SubStr(oNF:_InfNfe:_ID:Text,4),"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999"),oFont12N:oFont)
- oDanfe:Box(105,350,137,603)
- If nFolha == 1
- oDanfe:Say(085,355,"CHAVE DE ACESSO DA "+iif(lNFCE,"NFC-E","NF-E"),oFont12N:oFont)
- nFontSize := 28
- oDanfe:Code128C(072,370,SubStr(oNF:_InfNfe:_ID:Text,4), nFontSize )
- EndIf
- If !Empty(cCodAutDPEC) .And. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"4" .And. !lUsaColab
- cDataEmi := Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",Substr(oNFe:_NFE:_INFNFE:_IDE:_DHEMI:Text,9,2),Substr(oNFe:_NFE:_INFNFE:_IDE:_DEMI:Text,9,2))
- cTPEmis := "4"
- If Type("oDPEC:_ENVDPEC:_INFDPEC:_RESNFE") <> "U"
- cUF := aUF[aScan(aUF,{|x| x[1] == oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_UF:Text})][02]
- cValIcm := StrZero(Val(StrTran(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VNF:TEXT,".","")),14)
- cICMSp := iif(Val(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VICMS:TEXT)>0,"1","2")
- cICMSs := iif(Val(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VST:TEXT)>0,"1","2")
- ElseIf type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST") <> "U" //EPEC NFE
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_UF:TEXT") <> "U"
- cUF := aUF[aScan(aUF,{|x| x[1] == oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_UF:TEXT})][02]
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VNF:TEXT") <> "U"
- cValIcm := StrZero(Val(StrTran(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VNF:TEXT,".","")),14)
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VICMS:TEXT") <> "U"
- cICMSp:= IIf(Val(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VICMS:TEXT) > 0,"1","2")
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VST:TEXT") <> "U"
- cICMSs := IIf(Val(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VST:TEXT )> 0,"1","2")
- EndIf
- EndIf
- ElseIF (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25" .Or. ( (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"4" .And. lUsaColab .And. !Empty(cCodAutDPEC) )
- cUF := aUF[aScan(aUF,{|x| x[1] == oNFe:_NFE:_INFNFE:_DEST:_ENDERDEST:_UF:Text})][02]
- cDataEmi := Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",Substr(oNFe:_NFE:_INFNFE:_IDE:_DHEMI:Text,9,2),Substr(oNFe:_NFE:_INFNFE:_IDE:_DEMI:Text,9,2))
- cTPEmis := oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT
- cValIcm := StrZero(Val(StrTran(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VNF:TEXT,".","")),14)
- cICMSp := iif(Val(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VICMS:TEXT)>0,"1","2")
- cICMSs :=iif(Val(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VST:TEXT)>0,"1","2")
- EndIf
- If !Empty(cUF) .And. !Empty(cDataEmi) .And. !Empty(cTPEmis) .And. !Empty(cValIcm) .And. !Empty(cICMSp) .And. !Empty(cICMSs)
- If Type("oNF:_InfNfe:_DEST:_CNPJ:Text")<>"U"
- cCNPJCPF := oNF:_InfNfe:_DEST:_CNPJ:Text
- If cUf == "99"
- cCNPJCPF := STRZERO(val(cCNPJCPF),14)
- EndIf
- ElseIf Type("oNF:_INFNFE:_DEST:_CPF:Text")<>"U"
- cCNPJCPF := oNF:_INFNFE:_DEST:_CPF:Text
- cCNPJCPF := STRZERO(val(cCNPJCPF),14)
- Else
- cCNPJCPF := ""
- EndIf
- cChaveCont += cUF+cTPEmis+cCNPJCPF+cValIcm+cICMSp+cICMSs+cDataEmi
- cChaveCont := cChaveCont+Modulo11(cChaveCont)
- EndIf
- If Empty(cCodAutDPEC)
- If Empty(cChaveCont)
- oDanfe:Say(117,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(127,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- Endif
- If !Empty(cCodAutDPEC)
- oDanfe:Say(117,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(127,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- // inicio do segundo codigo de barras ref. a transmissao CONTIGENCIA OFF LINE
- If !Empty(cChaveCont) .And. Empty(cCodAutDPEC) .And. !(Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900)
- If nFolha == 1
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(135,370,cChaveCont, nFontSize )
- EndIf
- Else
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(112,370,cChaveCont, nFontSize )
- EndIf
- EndIf
- EndIf
- //Quadro 4
- oDanfe:Box(139,000,162,603)
- oDanfe:Box(139,000,162,350)
- oDanfe:Say(148,002,"NATUREZA DA OPERAデO",oFont08N:oFont)
- oDanfe:Say(158,002,oIdent:_NATOP:TEXT,oFont08:oFont)
- If !Empty(cCodAutDPEC)
- oDanfe:Say(148,352,"N渧ERO DE REGISTRO DPEC",oFont08N:oFont)
- Endif
- If Empty(cCodAutDPEC) .And. (((Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900).And.(oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"23") .Or. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"1|6|7")
- oDanfe:Say(148,352,"PROTOCOLO DE AUTORIZAデO DE USO",oFont08N:oFont)
- Endif
- If((oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25")
- oDanfe:Say(148,352,"DADOS DA "+iif(lNFCE,"NFC-E","NF-E"),oFont08N:oFont)
- Endif
- cDadosProt := IIF(!Empty(cCodAutDPEC),cCodAutDPEC+" "+AllTrim(IIF(!Empty(dDtReceb),ConvDate(DTOS(dDtReceb)),ConvDate(oNF:_InfNfe:_IDE:_DHEMI:Text)))+" "+AllTrim(cDtHrRecCab),IIF(!Empty(cCodAutSef) .And. ((Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900).And.(oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"23") .Or. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"1|6|7",cCodAutSef+" "+AllTrim(IIF(!Empty(dDtReceb),ConvDate(DTOS(dDtReceb)),ConvDate(oNF:_InfNfe:_IDE:_DHEMI:Text)))+" "+AllTrim(cDtHrRecCab),TransForm(cChaveCont,"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999")))
- oDanfe:Say(158,354,cDadosProt,oFont08:oFont)
- nFolha++
- //Quadro 5
- oDanfe:Box(164,000,187,603)
- oDanfe:Box(164,000,187,200)
- oDanfe:Box(164,200,187,400)
- oDanfe:Box(164,400,187,603)
- oDanfe:Say(172,002,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(180,002,IIf(Type("oEmitente:_IE:TEXT")<>"U",oEmitente:_IE:TEXT,""),oFont08:oFont)
- oDanfe:Say(172,205,"INSC.ESTADUAL DO SUBST.TRIB.",oFont08N:oFont)
- oDanfe:Say(180,205,IIf(Type("oEmitente:_IEST:TEXT")<>"U",oEmitente:_IEST:TEXT,""),oFont08:oFont)
- oDanfe:Say(172,405,"CNPJ/CPF",oFont08N:oFont)
- Do Case
- Case Type("oEmitente:_CNPJ")=="O"
- cAux := TransForm(oEmitente:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oEmitente:_CPF")=="O"
- cAux := TransForm(oEmitente:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(180,405,cAux,oFont08:oFont)
- //Quadro destinat嫫io/remetente
- Do Case
- Case Type("oDestino:_CNPJ")=="O"
- cAux := TransForm(oDestino:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oDestino:_CPF")=="O"
- cAux := TransForm(oDestino:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(195,002,"DESTINATARIO/REMETENTE",oFont08N:oFont)
- oDanfe:Box(197,000,217,450)
- oDanfe:Say(205,002, "NOME/RAZ鬃 SOCIAL",oFont08N:oFont)
- oDanfe:Say(215,002,NoChar(oDestino:_XNome:TEXT,lConverte),oFont08:oFont)
- oDanfe:Box(197,280,217,500)
- oDanfe:Say(205,283,"CNPJ/CPF",oFont08N:oFont)
- oDanfe:Say(215,283,cAux,oFont08:oFont)
- oDanfe:Box(217,000,237,500)
- oDanfe:Box(217,000,237,260)
- oDanfe:Say(224,002,"ENDEREと",oFont08N:oFont)
- oDanfe:Say(234,002,aDest[01],oFont08:oFont)
- oDanfe:Box(217,230,237,380)
- oDanfe:Say(224,232,"BAIRRO/DISTRITO",oFont08N:oFont)
- oDanfe:Say(234,232,aDest[02],oFont08:oFont)
- oDanfe:Box(217,380,237,500)
- oDanfe:Say(224,382,"CEP",oFont08N:oFont)
- oDanfe:Say(234,382,aDest[03],oFont08:oFont)
- oDanfe:Box(236,000,257,500)
- oDanfe:Box(236,000,257,180)
- oDanfe:Say(245,002,"MUNICIPIO",oFont08N:oFont)
- oDanfe:Say(255,002,aDest[05],oFont08:oFont)
- oDanfe:Box(236,150,257,256)
- oDanfe:Say(245,152,"FONE/FAX",oFont08N:oFont)
- oDanfe:Say(255,152,aDest[06],oFont08:oFont)
- oDanfe:Box(236,255,257,341)
- oDanfe:Say(245,257,"UF",oFont08N:oFont)
- oDanfe:Say(255,257,aDest[07],oFont08:oFont)
- oDanfe:Box(236,340,257,500)
- oDanfe:Say(245,342,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(255,342,aDest[08],oFont08:oFont)
- oDanfe:Box(197,502,217,603)
- oDanfe:Say(205,504,"DATA DE EMISS鬃",oFont08N:oFont)
- oDanfe:Say(215,504,Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",ConvDate(oIdent:_DHEmi:TEXT),ConvDate(oIdent:_DEmi:TEXT)),oFont08:oFont)
- oDanfe:Box(217,502,237,603)
- oDanfe:Say(224,504,"DATA ENTRADA/SA沝A",oFont08N:oFont)
- oDanfe:Say(233,504,Iif( Empty(aDest[4]),"",ConvDate(aDest[4]) ),oFont08:oFont)
- oDanfe:Box(236,502,257,603)
- oDanfe:Say(243,503,"HORA ENTRADA/SA沝A",oFont08N:oFont)
- oDanfe:Say(252,503,aHrEnt[01],oFont08:oFont)
- //Quadro Informa踥es do local de retirada
- If valType(oRetirada)=="O"
- Do Case
- Case Type("oRetirada:_CNPJ")=="O"
- cAux := TransForm(oRetirada:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oRetirada:_CPF")=="O"
- cAux := TransForm(oRetirada:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(195+nAjustaRet,002,"INFORMAベES DO LOCAL DE RETIRADA",oFont08N:oFont)
- oDanfe:Box(197+nAjustaRet,000,217+nAjustaRet,450)
- oDanfe:Say(205+nAjustaRet,002, "NOME/RAZ鬃 SOCIAL",oFont08N:oFont)
- oDanfe:Say(215+nAjustaRet,002,NoChar(aRetirada[1],lConverte),oFont08:oFont)
- oDanfe:Box(197+nAjustaRet,380,217+nAjustaRet,500)
- oDanfe:Say(205+nAjustaRet,383,"CNPJ/CPF",oFont08N:oFont)
- oDanfe:Say(215+nAjustaRet,383,cAux,oFont08:oFont)
- oDanfe:Box(217+nAjustaRet,000,237+nAjustaRet,500)
- oDanfe:Box(217+nAjustaRet,000,237+nAjustaRet,260)
- oDanfe:Say(224+nAjustaRet,002,"ENDEREと",oFont08N:oFont)
- oDanfe:Say(234+nAjustaRet,002,MontaEnd(oRetirada),oFont08:oFont)
- oDanfe:Say(224+nAjustaRet,262,"BAIRRO/DISTRITO",oFont08N:oFont)
- oDanfe:Say(234+nAjustaRet,262,aRetirada[7],oFont08:oFont)
- oDanfe:Box(236+nAjustaRet,000,257+nAjustaRet,500)
- oDanfe:Box(236+nAjustaRet,000,257+nAjustaRet,480)
- oDanfe:Say(245+nAjustaRet,002,"MUNICIPIO",oFont08N:oFont)
- oDanfe:Say(255+nAjustaRet,002,aRetirada[8],oFont08:oFont)
- oDanfe:Say(245+nAjustaRet,485,"UF",oFont08N:oFont)
- oDanfe:Say(255+nAjustaRet,485,aRetirada[09],oFont08:oFont)
- oDanfe:Box(197+nAjustaRet,502,217+nAjustaRet,603)
- oDanfe:Say(205+nAjustaRet,504,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(215+nAjustaRet,504,aRetirada[10],oFont08:oFont)
- oDanfe:Box(217+nAjustaRet,502,237+nAjustaRet,603)
- oDanfe:Say(224+nAjustaRet,504,"CEP",oFont08N:oFont)
- oDanfe:Say(233+nAjustaRet,504,aRetirada[11],oFont08:oFont)
- oDanfe:Box(236+nAjustaRet,502,257+nAjustaRet,603)
- oDanfe:Say(243+nAjustaRet,503,"FONE/FAX",oFont08N:oFont)
- oDanfe:Say(252+nAjustaRet,503,aRetirada[12],oFont08:oFont)
- endIf
- //Quadro Informa踥es do local de entrega
- If valType(oEntrega)=="O"
- Do Case
- Case Type("oEntrega:_CNPJ")=="O"
- cAux := TransForm(oEntrega:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oEntrega:_CPF")=="O"
- cAux := TransForm(oEntrega:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(195+nAjustaEnt,002,"INFORMAベES DO LOCAL DE ENTREGA",oFont08N:oFont)
- oDanfe:Box(197+nAjustaEnt,000,217+nAjustaEnt,450)
- oDanfe:Say(205+nAjustaEnt,002, "NOME/RAZ鬃 SOCIAL",oFont08N:oFont)
- oDanfe:Say(215+nAjustaEnt,002,NoChar(aEntrega[1],lConverte),oFont08:oFont)
- oDanfe:Box(197+nAjustaEnt,380,217+nAjustaEnt,500)
- oDanfe:Say(205+nAjustaEnt,383,"CNPJ/CPF",oFont08N:oFont)
- oDanfe:Say(215+nAjustaEnt,383,cAux,oFont08:oFont)
- oDanfe:Box(217+nAjustaEnt,000,237+nAjustaEnt,500)
- oDanfe:Box(217+nAjustaEnt,000,237+nAjustaEnt,260)
- oDanfe:Say(224+nAjustaEnt,002,"ENDEREと",oFont08N:oFont)
- oDanfe:Say(234+nAjustaEnt,002,MontaEnd(oEntrega),oFont08:oFont)
- oDanfe:Say(224+nAjustaEnt,262,"BAIRRO/DISTRITO",oFont08N:oFont)
- oDanfe:Say(234+nAjustaEnt,262,aEntrega[7],oFont08:oFont)
- oDanfe:Box(236+nAjustaEnt,000,257+nAjustaEnt,500)
- oDanfe:Box(236+nAjustaEnt,000,257+nAjustaEnt,480)
- oDanfe:Say(245+nAjustaEnt,002,"MUNICIPIO",oFont08N:oFont)
- oDanfe:Say(255+nAjustaEnt,002,aEntrega[8],oFont08:oFont)
- oDanfe:Say(245+nAjustaEnt,485,"UF",oFont08N:oFont)
- oDanfe:Say(255+nAjustaEnt,485,aEntrega[9],oFont08:oFont)
- oDanfe:Box(197+nAjustaEnt,502,217+nAjustaEnt,603)
- oDanfe:Say(205+nAjustaEnt,504,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(215+nAjustaEnt,504,aEntrega[10],oFont08:oFont)
- oDanfe:Box(217+nAjustaEnt,502,237+nAjustaEnt,603)
- oDanfe:Say(224+nAjustaEnt,504,"CEP",oFont08N:oFont)
- oDanfe:Say(233+nAjustaEnt,504,aEntrega[11],oFont08:oFont)
- oDanfe:Box(236+nAjustaEnt,502,257+nAjustaEnt,603)
- oDanfe:Say(243+nAjustaEnt,503,"FONE/FAX",oFont08N:oFont)
- oDanfe:Say(252+nAjustaEnt,503,aEntrega[12],oFont08:oFont)
- EndiF
- //Quadro fatura
- aAux := {{{},{},{},{},{},{},{},{},{}}}
- nY := 0
- For nX := 1 To Len(aFaturas)
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][1])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][2])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][3])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][4])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][5])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][6])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][7])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][8])
- nY++
- aadd(Atail(aAux)[nY],aFaturas[nX][9])
- If nY >= 9
- nY := 0
- EndIf
- Next nX
- oDanfe:Say(263+nAjustaFat,002,"FATURA",oFont08N:oFont)
- oDanfe:Box(265+nAjustaFat,000,296+nAjustaFat,068)
- oDanfe:Box(265+nAjustaFat,067,296+nAjustaFat,134)
- oDanfe:Box(265+nAjustaFat,134,296+nAjustaFat,202)
- oDanfe:Box(265+nAjustaFat,201,296+nAjustaFat,268)
- oDanfe:Box(265+nAjustaFat,268,296+nAjustaFat,335)
- oDanfe:Box(265+nAjustaFat,335,296+nAjustaFat,403)
- oDanfe:Box(265+nAjustaFat,402,296+nAjustaFat,469)
- oDanfe:Box(265+nAjustaFat,469,296+nAjustaFat,537)
- oDanfe:Box(265+nAjustaFat,536,296+nAjustaFat,603)
- nColuna := 002
- If Len(aFaturas) >0
- For nY := 1 To 9
- oDanfe:Say(273+nAjustaFat,nColuna,aAux[1][nY][1],oFont08:oFont)
- oDanfe:Say(281+nAjustaFat,nColuna,aAux[1][nY][2],oFont08:oFont)
- oDanfe:Say(289+nAjustaFat,nColuna,aAux[1][nY][3],oFont08:oFont)
- nColuna:= nColuna+67
- Next nY
- Endif
- //Calculo do imposto
- oDanfe:Say(305+nAjustImp,002,"CALCULO DO IMPOSTO",oFont08N:oFont)
- oDanfe:Box(307+nAjustImp,000,330+nAjustImp,121)
- oDanfe:Say(316+nAjustImp,002,"BASE DE CALCULO DO ICMS",oFont08N:oFont)
- If cMVCODREG $ "2|3"
- oDanfe:Say(326+nAjustImp,002,aTotais[01],oFont08:oFont)
- ElseIf lImpSimpN
- oDanfe:Say(326+nAjustImp,002,aSimpNac[01],oFont08:oFont)
- Endif
- oDanfe:Box(307+nAjustImp,120,330+nAjustImp,200)
- oDanfe:Say(316+nAjustImp,125,"VALOR DO ICMS",oFont08N:oFont)
- If cMVCODREG $ "2|3"
- oDanfe:Say(326+nAjustImp,125,aTotais[02],oFont08:oFont)
- ElseIf lImpSimpN
- oDanfe:Say(326+nAjustImp,125,aSimpNac[02],oFont08:oFont)
- Endif
- oDanfe:Box(307+nAjustImp,199,330+nAjustImp,360)
- oDanfe:Say(316+nAjustImp,200,"BASE DE CALCULO DO ICMS SUBSTITUIデO",oFont08N:oFont)
- oDanfe:Say(326+nAjustImp,202,aTotais[03],oFont08:oFont)
- oDanfe:Box(307+nAjustImp,360,330+nAjustImp,490)
- oDanfe:Say(316+nAjustImp,363,"VALOR DO ICMS SUBSTITUIデO",oFont08N:oFont)
- oDanfe:Say(326+nAjustImp,363,aTotais[04],oFont08:oFont)
- oDanfe:Box(307+nAjustImp,490,330+nAjustImp,603)
- oDanfe:Say(316+nAjustImp,491,"VALOR TOTAL DOS PRODUTOS",oFont08N:oFont)
- oDanfe:Say(327+nAjustImp,491,aTotais[05],oFont08:oFont)
- oDanfe:Box(330+nAjustImp,000,353+nAjustImp,110)
- oDanfe:Say(339+nAjustImp,002,"VALOR DO FRETE",oFont08N:oFont)
- oDanfe:Say(349+nAjustImp,002,aTotais[06],oFont08:oFont)
- oDanfe:Box(330+nAjustImp,100,353+nAjustImp,190)
- oDanfe:Say(339+nAjustImp,102,"VALOR DO SEGURO",oFont08N:oFont)
- oDanfe:Say(349+nAjustImp,102,aTotais[07],oFont08:oFont)
- oDanfe:Box(330+nAjustImp,190,353+nAjustImp,290)
- oDanfe:Say(339+nAjustImp,194,"DESCONTO",oFont08N:oFont)
- oDanfe:Say(349+nAjustImp,194,aTotais[08],oFont08:oFont)
- oDanfe:Box(330+nAjustImp,290,353+nAjustImp,415)
- oDanfe:Say(339+nAjustImp,295,"OUTRAS DESPESAS ACESS紑IAS",oFont08N:oFont)
- oDanfe:Say(349+nAjustImp,295,aTotais[09],oFont08:oFont)
- oDanfe:Box(330+nAjustImp,414,353+nAjustImp,500)
- oDanfe:Say(339+nAjustImp,420,"VALOR DO IPI",oFont08N:oFont)
- oDanfe:Say(349+nAjustImp,420,aTotais[10],oFont08:oFont)
- oDanfe:Box(330+nAjustImp,500,353+nAjustImp,603)
- oDanfe:Say(339+nAjustImp,506,"VALOR TOTAL DA NOTA",oFont08N:oFont)
- oDanfe:Say(349+nAjustImp,506,aTotais[11],oFont08:oFont)
- //Transportador/Volumes transportados
- oDanfe:Say(361+nAjustaVt,002,"TRANSPORTADOR/VOLUMES TRANSPORTADOS",oFont08N:oFont)
- oDanfe:Box(363+nAjustaVt,000,386+nAjustaVt,603)
- oDanfe:Say(372+nAjustaVt,002,"RAZ鬃 SOCIAL",oFont08N:oFont)
- oDanfe:Say(382+nAjustaVt,002,aTransp[01],oFont08:oFont)
- oDanfe:Box(363+nAjustaVt,243,386+nAjustaVt,315)
- oDanfe:Say(372+nAjustaVt,245,"FRETE POR CONTA",oFont08N:oFont)
- If cModFrete =="0"
- oDanfe:Say(382+nAjustaVt,245,"0-REMETENTE",oFont08:oFont)
- ElseIf cModFrete =="1"
- oDanfe:Say(382+nAjustaVt,245,"1-DESTINATARIO",oFont08:oFont)
- ElseIf cModFrete =="2"
- oDanfe:Say(382+nAjustaVt,245,"2-TERCEIROS",oFont08:oFont)
- ElseIf cModFrete =="3"
- oDanfe:Say(382+nAjustaVt,245,"3-TRANSP PROP/REM",oFont08:oFont)
- ElseIf cModFrete =="4"
- oDanfe:Say(382+nAjustaVt,245,"4-TRANSP PROP/DEST",oFont08:oFont)
- ElseIf cModFrete =="9"
- oDanfe:Say(382+nAjustaVt,245,"9-SEM FRETE",oFont08:oFont)
- Else
- oDanfe:Say(382+nAjustaVt,245,"",oFont08:oFont)
- Endif
- //oDanfe:Say(382,102,"0-EMITENTE/1-DESTINATARIO [" + aTransp[02] + "]",oFont08:oFont)
- oDanfe:Box(363+nAjustaVt,315,386+nAjustaVt,370)
- oDanfe:Say(372+nAjustaVt,317,"C笈IGO ANTT",oFont08N:oFont)
- oDanfe:Say(382+nAjustaVt,319,aTransp[03],oFont08:oFont)
- oDanfe:Box(363+nAjustaVt,370,386+nAjustaVt,490)
- oDanfe:Say(372+nAjustaVt,375,"PLACA DO VE沊ULO",oFont08N:oFont)
- oDanfe:Say(382+nAjustaVt,375,aTransp[04],oFont08:oFont)
- oDanfe:Box(363+nAjustaVt,450,386+nAjustaVt,510)
- oDanfe:Say(372+nAjustaVt,452,"UF",oFont08N:oFont)
- oDanfe:Say(382+nAjustaVt,452,aTransp[05],oFont08:oFont)
- oDanfe:Box(363+nAjustaVt,510,386+nAjustaVt,603)
- oDanfe:Say(372+nAjustaVt,512,"CNPJ/CPF",oFont08N:oFont)
- oDanfe:Say(382+nAjustaVt,512,aTransp[06],oFont08:oFont)
- oDanfe:Box(385+nAjustaVt,000,409+nAjustaVt,603)
- oDanfe:Box(385+nAjustaVt,000,409+nAjustaVt,241)
- oDanfe:Say(393+nAjustaVt,002,"ENDEREと",oFont08N:oFont)
- oDanfe:Say(404+nAjustaVt,002,aTransp[07],oFont08:oFont)
- oDanfe:Box(385+nAjustaVt,240,409+nAjustaVt,341)
- oDanfe:Say(393+nAjustaVt,242,"MUNICIPIO",oFont08N:oFont)
- oDanfe:Say(404+nAjustaVt,242,aTransp[08],oFont08:oFont)
- oDanfe:Box(385+nAjustaVt,340,409+nAjustaVt,440)
- oDanfe:Say(393+nAjustaVt,342,"UF",oFont08N:oFont)
- oDanfe:Say(404+nAjustaVt,342,aTransp[09],oFont08:oFont)
- oDanfe:Box(385+nAjustaVt,440,409+nAjustaVt,603)
- oDanfe:Say(393+nAjustaVt,442,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(404+nAjustaVt,442,aTransp[10],oFont08:oFont)
- oDanfe:Box(408+nAjustaVt,000,432+nAjustaVt,603)
- oDanfe:Box(408+nAjustaVt,000,432+nAjustaVt,101)
- oDanfe:Say(418+nAjustaVt,002,"QUANTIDADE",oFont08N:oFont)
- oDanfe:Say(428+nAjustaVt,002,aTransp[11],oFont08:oFont)
- oDanfe:Box(408+nAjustaVt,59,432+nAjustaVt,285)
- oDanfe:Say(418+nAjustaVt,61,"ESPECIE",oFont08N:oFont)
- oDanfe:Say(428+nAjustaVt,61,Iif(!Empty(aTransp[12]),aTransp[12],Iif(Len(aEspVol)>0,aEspVol[1][1],"")),oFont08:oFont)
- //oDanfe:Say(428,102,aEspVol[1][1],oFont08:oFont)
- oDanfe:Box(408+nAjustaVt,285,432+nAjustaVt,285)
- oDanfe:Say(418+nAjustaVt,287,"MARCA",oFont08N:oFont)
- oDanfe:Say(428+nAjustaVt,287,aTransp[13],oFont08:oFont)
- oDanfe:Box(408+nAjustaVt,385,432+nAjustaVt,385)
- oDanfe:Say(418+nAjustaVt,387,"NUMERAデO",oFont08N:oFont)
- oDanfe:Say(428+nAjustaVt,387,aTransp[14],oFont08:oFont)
- oDanfe:Box(408+nAjustaVt,485,432+nAjustaVt,485)
- oDanfe:Say(418+nAjustaVt,487,"PESO BRUTO",oFont08N:oFont)
- oDanfe:Say(428+nAjustaVt,487,Iif(!Empty(aTransp[15]),aTransp[15],Iif(Len(aEspVol)>0 .And. Val(aEspVol[1][3])>0,Transform(Val(aEspVol[1][3]),"@E 999999.9999"),"")),oFont08:oFont)
- //oDanfe:Say(428,402,Iif (!Empty(aEspVol[1][3]),Transform(val(aEspVol[1][3]),"@E 999999.9999"),""),oFont08:oFont)
- oDanfe:Box(408+nAjustaVt,544,432+nAjustaVt,603)
- oDanfe:Say(418+nAjustaVt,546,"PESO LIQUIDO",oFont08N:oFont)
- oDanfe:Say(428+nAjustaVt,546,Iif(!Empty(aTransp[16]),aTransp[16],Iif(Len(aEspVol)>0 .And. Val(aEspVol[1][2])>0,Transform(Val(aEspVol[1][2]),"@E 999999.9999"),"")),oFont08:oFont)
- //oDanfe:Say(428,502,Iif (!Empty(aEspVol[1][2]),Transform(val(aEspVol[1][2]),"@E 999999.9999"),""),oFont08:oFont)
- //Calculo do ISSQN
- oDanfe:Say(686,000,"CALCULO DO ISSQN",oFont08N:oFont)
- oDanfe:Box(688,000,711,151)
- oDanfe:Say(696,002,"INSCRIデO MUNICIPAL",oFont08N:oFont)
- oDanfe:Say(706,002,aISSQN[1],oFont08:oFont)
- oDanfe:Box(688,150,711,301)
- oDanfe:Say(696,152,"VALOR TOTAL DOS SERVIとS",oFont08N:oFont)
- oDanfe:Say(706,152,aISSQN[2],oFont08:oFont)
- oDanfe:Box(688,300,711,451)
- oDanfe:Say(696,302,"BASE DE C簇CULO DO ISSQN",oFont08N:oFont)
- oDanfe:Say(706,302,aISSQN[3],oFont08:oFont)
- oDanfe:Box(688,450,711,603)
- oDanfe:Say(696,452,"VALOR DO ISSQN",oFont08N:oFont)
- oDanfe:Say(706,452,aISSQN[4],oFont08:oFont)
- //Dados Adicionais
- oDanfe:Say(719,000,"DADOS ADICIONAIS",oFont08N:oFont)
- oDanfe:Box(721,000,865,351)
- oDanfe:Say(729,002,"INFORMAベES COMPLEMENTARES",oFont08N:oFont)
- nLenMensagens:= Len(aMensagem)
- nLin:= 741
- nMensagem := 0
- For nX := 1 To Min(nLenMensagens, MAXMSG)
- oDanfe:Say(nLin,002,aMensagem[nX],oFont08:oFont)
- nLin:= nLin+10
- Next nX
- nMensagem := nX
- oDanfe:Box(721,350,865,603)
- oDanfe:Say(729,352,"RESERVADO AO FISCO",oFont08N:oFont)
- //Logotipo Rodape
- if file(cLogoTotvs) .or. Resource2File ( cLogoTotvs, cStartPath+cLogoTotvs )
- oDanfe:SayBitmap(866,484,cLogoTotvs,120,20)
- endif
- nLenMensagens:= Len(aResFisco)
- nLin:= 741
- For nX := 1 To Min(nLenMensagens, MAXMSG)
- oDanfe:Say(nLin,351,aResFisco[nX],oFont08:oFont)
- nLin:= nLin+10
- Next
- //Dados do produto ou servico
- aAux := {{{},{},{},{},{},{},{},{},{},{},{},{},{},{}}}
- nY := 0
- nLenItens := Len(aItens)
- For nX :=1 To nLenItens
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][01])
- nY++
- aadd(Atail(aAux)[nY],NoChar(aItens[nX][02],lConverte))
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][03])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][04])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][05])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][06])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][07])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][08])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][09])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][10])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][11])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][12])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][13])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][14])
- If nY >= 14
- nY := 0
- EndIf
- Next nX
- For nX := 1 To nLenItens
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- If nY >= 14
- nY := 0
- EndIf
- Next nX
- // Popula o array de cabe蓷lho das colunas de produtos/servi蔞s.
- aAuxCabec := {;
- "COD. PROD",;
- "DESCRIデO DO PROD./SERV.",;
- "NCM/SH",;
- IIf( cMVCODREG == "1", "CSOSN","CST" ),;
- "CFOP",;
- "UN",;
- "QUANT.",;
- "V.UNITARIO",;
- "V.TOTAL",;
- "BC.ICMS",;
- "V.ICMS",;
- "V.IPI",;
- "A.ICMS",;
- "A.IPI";
- }
- // Retorna o tamanho das colunas baseado em seu conteudo
- aTamCol := RetTamCol(aAuxCabec, aAux, oDanfe, oFont08:oFont, oFont08N:oFont)
- oDanfe:Say(440+nAjustaPro,002,"DADOS DO PRODUTO / SERVIと",oFont08N:oFont)
- oDanfe:Box(442+nAjustaPro,000,678,603)
- nAuxH := 0
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[1])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "COD. PROD",oFont08N:oFont)
- nAuxH += aTamCol[1]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[2])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "DESCRIデO DO PROD./SERV.", oFont08N:oFont)
- nAuxH += aTamCol[2]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[3])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "NCM/SH", oFont08N:oFont)
- nAuxH += aTamCol[3]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[4])
- If cMVCODREG == "1"
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "CSOSN", oFont08N:oFont)
- Else
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "CST", oFont08N:oFont)
- Endif
- nAuxH += aTamCol[4]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[5])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "CFOP", oFont08N:oFont)
- nAuxH += aTamCol[5]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[6])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "UN", oFont08N:oFont)
- nAuxH += aTamCol[6]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[7])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "QUANT.", oFont08N:oFont)
- nAuxH += aTamCol[7]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[8])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "V.UNITARIO", oFont08N:oFont)
- nAuxH += aTamCol[8]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[9])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "V.TOTAL", oFont08N:oFont)
- nAuxH += aTamCol[9]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[10])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "BC.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[10]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[11])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "V.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[11]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[12])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "V.IPI", oFont08N:oFont)
- nAuxH += aTamCol[12]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[13])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "A.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[13]
- oDanfe:Box(442+nAjustaPro, nAuxH, 678, nAuxH + aTamCol[14])
- oDanfe:Say(450+nAjustaPro, nAuxH + 2, "A.IPI", oFont08N:oFont)
- If MV_PAR05=1 .And. nFolhas>1
- oDanfe:Say(875,497,"CONTINUA NO VERSO")
- Endif
- // INICIANDO INFORMAベES PARA O CABEずLHO DA PAGINA 2
- nLinha := 460+nAjustaPro
- nL := 0
- lFlag := .T.
- For nY := 1 To nLenItens
- nL++
- nLin:= 741
- nCont := 0
- If lflag
- If nL > nMaxItemP2
- oDanfe:EndPage()
- oDanfe:StartPage()
- If MV_PAR05 == 1
- nLinhavers := 42
- Else
- nLinhavers := 0
- EndIf
- nLinha := 181 + IIF(nFolha >=3 ,0, nLinhavers)
- oDanfe:Box(000+nLinhavers,000,095+nLinhavers,250)
- oDanfe:Say(010+nLinhavers,096, "Identifica誽o do emitente",oFont12N:oFont)
- nLinCalc := 023 + nLinhavers
- cStrAux := AllTrim(NoChar(oEmitente:_xNome:Text,lConverte))
- nForTo := Len(cStrAux)/24
- nForTo := Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1,Round(nForTo,0))
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*24)+1),24), oFont12N:oFont )
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xLgr:Text,lConverte))+", "+AllTrim(oEmitente:_EnderEmit:_Nro:Text)
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- If ValAtrib("oEmitente:_EnderEmit:_xCpl") <> "U"
- cStrAux := "Complemento: "+AllTrim(NoChar(oEmitente:_EnderEmit:_xCpl:TEXT,lConverte))
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte))
- If ValAtrib("oEmitente:_EnderEmit:_Cep")<>"U"
- cStrAux += " Cep:"+TransForm(oEmitente:_EnderEmit:_Cep:Text,"@r 99999-999")
- EndIf
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(ValAtrib("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- Else
- oDanfe:Say(nLinCalc,098, NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte)+" Cep:"+TransForm(IIF(ValAtrib("oEmitente:_EnderEmit:_Cep")=="U","",oEmitente:_EnderEmit:_Cep:Text),"@r 99999-999"),oFont08N:oFont)
- nLinCalc+=10
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(ValAtrib("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- EndIf
- oDanfe:Box(000+nLinhavers,248,095+nLinhavers,351)
- oDanfe:Say(013+nLinhavers,275, "DANFE",oFont18N:oFont)
- oDanfe:Say(023+nLinhavers,255, "DOCUMENTO AUXILIAR DA",oFont07:oFont)
- if lNFCE
- oDanfe:Say(033+nLinhavers,255, "NOTA FISCAL DE CONSUMIDOR",oFont07:oFont)
- else
- oDanfe:Say(033+nLinhavers,255, "NOTA FISCAL ELETR偡ICA",oFont07:oFont)
- endif
- oDanfe:Say(043+nLinhavers,255, "0-ENTRADA",oFont08:oFont)
- oDanfe:Say(053+nLinhavers,255, "1-SA沝A" ,oFont08:oFont)
- oDanfe:Box(037+nLinhavers,305,047+nLinhavers,315)
- oDanfe:Say(045+nLinhavers,307, oIdent:_TpNf:Text,oFont08N:oFont)
- oDanfe:Say(062+nLinhavers,255,"N. "+StrZero(Val(oIdent:_NNf:Text),9),oFont10N:oFont)
- oDanfe:Say(072+nLinhavers,255,"S仂IE "+SubStr(oIdent:_Serie:Text,1,3),oFont10N:oFont)
- oDanfe:Say(082+nLinhavers,255,"FOLHA "+StrZero(nFolha,2)+"/"+StrZero(nFolhas,2),oFont10N:oFont)
- oDanfe:Box(000+nLinhavers,350,095+nLinhavers,603)
- oDanfe:Box(000+nLinhavers,350,040+nLinhavers,603)
- oDanfe:Box(040+nLinhavers,350,062+nLinhavers,603)
- oDanfe:Box(063+nLinhavers,350,095+nLinhavers,603)
- oDanfe:Say(058+nLinhavers,355,TransForm(SubStr(oNF:_InfNfe:_ID:Text,4),"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999"),oFont12N:oFont)
- oDanfe:Say(048+nLinhavers,355,"CHAVE DE ACESSO DA "+iif(lNFCE,"NFC-E","NF-E"),oFont12N:oFont)
- nFontSize := 28
- oDanfe:Code128C(036+nLinhavers,370,SubStr(oNF:_InfNfe:_ID:Text,4), nFontSize )
- If lMv_Logod
- oDanfe:SayBitmap(003+nLinhavers,003,cLogoD,090,090)
- Else
- oDanfe:SayBitmap(003+nLinhavers,003,cLogo,090,090)
- EndIf
- If Empty(cChaveCont)
- oDanfe:Say(075+nLinhavers,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(085+nLinhavers,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- If !Empty(cCodAutDPEC)
- oDanfe:Say(075+nLinhavers,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(085+nLinhavers,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- If nFolha == 1
- If !Empty(cCodAutDPEC)
- nFontSize := 28
- oDanfe:Code128C(093+nLinhavers,370,cCodAutDPEC, nFontSize )
- Endif
- Endif
- // inicio do segundo codigo de barras ref. a transmissao CONTIGENCIA OFF LINE
- If !Empty(cChaveCont) .And. Empty(cCodAutDPEC) .And. !(Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900)
- If nFolha == 1
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(093+nLinhavers,370,cChaveCont, nFontSize )
- EndIf
- Else
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(093+nLinhavers,370,cChaveCont, nFontSize )
- EndIf
- EndIf
- EndIf
- oDanfe:Box(100+nLinhavers,000,123+nLinhavers,603)
- oDanfe:Box(100+nLinhavers,000,123+nLinhavers,300)
- oDanfe:Say(109+nLinhavers,002,"NATUREZA DA OPERAデO",oFont08N:oFont)
- oDanfe:Say(119+nLinhavers,002,oIdent:_NATOP:TEXT,oFont08:oFont)
- If(!Empty(cCodAutDPEC))
- oDanfe:Say(109+nLinhavers,300,"N渧ERO DE REGISTRO DPEC",oFont08N:oFont)
- Endif
- If(((Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900).And.(oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"2") .Or. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"1")
- oDanfe:Say(109+nLinhavers,302,"PROTOCOLO DE AUTORIZAデO DE USO",oFont08N:oFont)
- Endif
- If((oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25")
- oDanfe:Say(109+nLinhavers,300,"DADOS DA "+iif(lNFCE,"NFC-E","NF-E"),oFont08N:oFont)
- Endif
- oDanfe:Say(119+nLinhavers,302,cDadosProt,oFont08:oFont)
- nFolha++
- oDanfe:Box(126+nLinhavers,000,153+nLinhavers,603)
- oDanfe:Box(126+nLinhavers,000,153+nLinhavers,200)
- oDanfe:Box(126+nLinhavers,200,153+nLinhavers,400)
- oDanfe:Box(126+nLinhavers,400,153+nLinhavers,603)
- oDanfe:Say(135+nLinhavers,002,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(143+nLinhavers,002,IIf(ValAtrib("oEmitente:_IE:TEXT")<>"U",oEmitente:_IE:TEXT,""),oFont08:oFont)
- oDanfe:Say(135+nLinhavers,205,"INSC.ESTADUAL DO SUBST.TRIB.",oFont08N:oFont)
- oDanfe:Say(143+nLinhavers,205,IIf(ValAtrib("oEmitente:_IEST:TEXT")<>"U",oEmitente:_IEST:TEXT,""),oFont08:oFont)
- oDanfe:Say(135+nLinhavers,405,"CNPJ/CPF",oFont08N:oFont)
- Do Case
- Case ValAtrib("oEmitente:_CNPJ")=="O"
- cAux := TransForm(oEmitente:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case ValAtrib("oEmitente:_CPF")=="O"
- cAux := TransForm(oEmitente:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(143+nLinhavers,405,cAux,oFont08:oFont)
- nLenMensagens:= Len(aMensagem)
- nColLim := Iif(MV_PAR05==1,435,Iif(nMensagem <= nLenMensagens,680,865)) + nLinhavers
- oDanfe:Say(161+nLinhavers,002,"DADOS DO PRODUTO / SERVIと",oFont08N:oFont)
- oDanfe:Box(163+nLinhavers,000,nColLim,603)
- nAuxH := 0
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[1])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "COD. PROD",oFont08N:oFont)
- nAuxH += aTamCol[1]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[2])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "DESCRIデO DO PROD./SERV.", oFont08N:oFont)
- nAuxH += aTamCol[2]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[3])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "NCM/SH", oFont08N:oFont)
- nAuxH += aTamCol[3]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[4])
- If cMVCODREG == "1"
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "CSOSN", oFont08N:oFont)
- Else
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "CST", oFont08N:oFont)
- Endif
- nAuxH += aTamCol[4]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[5])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "CFOP", oFont08N:oFont)
- nAuxH += aTamCol[5]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[6])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "UN", oFont08N:oFont)
- nAuxH += aTamCol[6]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[7])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "QUANT.", oFont08N:oFont)
- nAuxH += aTamCol[7]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[8])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "V.UNITARIO", oFont08N:oFont)
- nAuxH += aTamCol[8]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[9])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "V.TOTAL", oFont08N:oFont)
- nAuxH += aTamCol[9]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[10])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "BC.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[10]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[11])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "V.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[11]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[12])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "V.IPI", oFont08N:oFont)
- nAuxH += aTamCol[12]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[13])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "A.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[13]
- oDanfe:Box(163+nLinhavers, nAuxH, nColLim, nAuxH + aTamCol[14])
- oDanfe:Say(171+nLinhavers, nAuxH + 2, "A.IPI", oFont08N:oFont)
- // FINALIZANDO INFORMAベES PARA O CABEずLHO DA PAGINA 2
- nL := 1
- lFlag := .F.
- //Verifico se ainda existem Dados Adicionais a serem impressos
- IF MV_PAR05 <> 1 .And. nMensagem <= nLenMensagens
- //Dados Adicionais
- oDanfe:Say(719+nLinhavers,000,"DADOS ADICIONAIS",oFont08N:oFont)
- oDanfe:Box(721+nLinhavers,000,865+nLinhavers,351)
- oDanfe:Say(729+nLinhavers,002,"INFORMAベES COMPLEMENTARES",oFont08N:oFont)
- nLin:= 741
- nLenMensagens:= Len(aMensagem)
- --nMensagem
- For nX := 1 To Min(nLenMensagens - nMensagem, MAXMSG)
- oDanfe:Say(nLin,002,aMensagem[nMensagem+nX],oFont08:oFont)
- nLin:= nLin+10
- Next nX
- nMensagem := nMensagem+nX
- oDanfe:Box(721+nLinhavers,350,865+nLinhavers,603)
- oDanfe:Say(729+nLinhavers,352,"RESERVADO AO FISCO",oFont08N:oFont)
- //Logotipo Rodape
- if file(cLogoTotvs) .or. Resource2File ( cLogoTotvs, cStartPath+cLogoTotvs )
- oDanfe:SayBitmap(866,484,cLogoTotvs,120,20)
- endif
- // Seta o m嫞imo de itens para o MAXITEMP2
- nMaxItemP2 := MAXITEMP2
- Else
- // Seta o m嫞imo de itens para o MAXITEMP2F
- nMaxItemP2 := MAXITEMP2F
- EndIF
- Endif
- Endif
- // INICIANDO INFORMAベES PARA O CABEずLHO DA PAGINA 3 E DIANTE
- If nL > Iif( (nfolha-1)%2==0 .And. MV_PAR05==1,MAXITEMP3,nMaxItemP2)
- oDanfe:EndPage()
- oDanfe:StartPage()
- nLenMensagens:= Len(aMensagem)
- nColLim := Iif(!(nfolha-1)%2==0 .And. MV_PAR05==1,435,Iif(nMensagem <= nLenMensagens,680,865))
- lFimpar := ((nfolha-1)%2==0)
- nLinha := 181
- If nfolha >= 3
- nLinhavers := 0
- EndIf
- oDanfe:Box(000,000,095,250)
- oDanfe:Say(010,096, "Identifica誽o do emitente",oFont12N:oFont)
- nLinCalc := 023
- cStrAux := AllTrim(NoChar(oEmitente:_xNome:Text,lConverte))
- nForTo := Len(cStrAux)/24
- nForTo := Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1,Round(nForTo,0))
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*24)+1),24), oFont12N:oFont )
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xLgr:Text,lConverte))+", "+AllTrim(oEmitente:_EnderEmit:_Nro:Text)
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- If ValAtrib("oEmitente:_EnderEmit:_xCpl") <> "U"
- cStrAux := "Complemento: "+AllTrim(NoChar(oEmitente:_EnderEmit:_xCpl:TEXT,lConverte))
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte))
- If ValAtrib("oEmitente:_EnderEmit:_Cep")<>"U"
- cStrAux += " Cep:"+TransForm(oEmitente:_EnderEmit:_Cep:Text,"@r 99999-999")
- EndIf
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(ValAtrib("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- Else
- oDanfe:Say(nLinCalc,098, NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte)+" Cep:"+TransForm(IIF(ValAtrib("oEmitente:_EnderEmit:_Cep")=="U","",oEmitente:_EnderEmit:_Cep:Text),"@r 99999-999"),oFont08N:oFont)
- nLinCalc+=10
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(ValAtrib("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- EndIf
- oDanfe:Box(000,248,095,351)
- oDanfe:Say(013,275, "DANFE",oFont18N:oFont)
- oDanfe:Say(023,255, "DOCUMENTO AUXILIAR DA",oFont07:oFont)
- if lNFCE
- oDanfe:Say(033,255, "NOTA FISCAL DE CONSUMIDOR",oFont07:oFont)
- else
- oDanfe:Say(033,255, "NOTA FISCAL ELETR偡ICA",oFont07:oFont)
- endif
- oDanfe:Say(043,255, "0-ENTRADA",oFont08:oFont)
- oDanfe:Say(053,255, "1-SA沝A" ,oFont08:oFont)
- oDanfe:Box(037,305,047,315)
- oDanfe:Say(045,307, oIdent:_TpNf:Text,oFont08N:oFont)
- oDanfe:Say(062,255,"N. "+StrZero(Val(oIdent:_NNf:Text),9),oFont10N:oFont)
- oDanfe:Say(072,255,"S仂IE "+SubStr(oIdent:_Serie:Text,1,3),oFont10N:oFont)
- oDanfe:Say(082,255,"FOLHA "+StrZero(nFolha,2)+"/"+StrZero(nFolhas,2),oFont10N:oFont)
- oDanfe:Box(000,350,095,603)
- oDanfe:Box(000,350,040,603)
- oDanfe:Box(040,350,062,603)
- oDanfe:Box(063,350,095,603)
- oDanfe:Say(058,355,TransForm(SubStr(oNF:_InfNfe:_ID:Text,4),"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999"),oFont12N:oFont)
- oDanfe:Say(048,355,"CHAVE DE ACESSO DA "+iif(lNFCE,"NFC-E","NF-E"),oFont12N:oFont)
- nFontSize := 28
- oDanfe:Code128C(036,370,SubStr(oNF:_InfNfe:_ID:Text,4), nFontSize )
- If lMv_Logod
- oDanfe:SayBitmap(003,003,cLogoD,090,090)
- Else
- oDanfe:SayBitmap(003,003,cLogo,090,090)
- EndIf
- If Empty(cChaveCont)
- oDanfe:Say(075,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(085,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- If !Empty(cCodAutDPEC)
- oDanfe:Say(075,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(085,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- If nFolha == 1
- If !Empty(cCodAutDPEC)
- nFontSize := 28
- oDanfe:Code128C(093,370,cCodAutDPEC, nFontSize )
- Endif
- Endif
- // inicio do segundo codigo de barras ref. a transmissao CONTIGENCIA OFF LINE
- If !Empty(cChaveCont) .And. Empty(cCodAutDPEC) .And. !(Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900)
- If nFolha == 1
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(093,370,cChaveCont, nFontSize )
- EndIf
- Else
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(093,370,cChaveCont, nFontSize )
- EndIf
- EndIf
- EndIf
- oDanfe:Box(100,000,123,603)
- oDanfe:Box(100,000,123,300)
- oDanfe:Say(109,002,"NATUREZA DA OPERAデO",oFont08N:oFont)
- oDanfe:Say(119,002,oIdent:_NATOP:TEXT,oFont08:oFont)
- If(!Empty(cCodAutDPEC))
- oDanfe:Say(109,300,"N渧ERO DE REGISTRO DPEC",oFont08N:oFont)
- Endif
- If(((Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900).And.(oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"2") .Or. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"1")
- oDanfe:Say(109,302,"PROTOCOLO DE AUTORIZAデO DE USO",oFont08N:oFont)
- Endif
- If((oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25")
- oDanfe:Say(109,300,"DADOS DA "+iif(lNFCE,"NFC-E","NF-E"),oFont08N:oFont)
- Endif
- oDanfe:Say(119,302,cDadosProt,oFont08:oFont)
- nFolha++
- oDanfe:Box(126,000,153,603)
- oDanfe:Box(126,000,153,200)
- oDanfe:Box(126,200,153,400)
- oDanfe:Box(126,400,153,603)
- oDanfe:Say(135,002,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(143,002,IIf(ValAtrib("oEmitente:_IE:TEXT")<>"U",oEmitente:_IE:TEXT,""),oFont08:oFont)
- oDanfe:Say(135,205,"INSC.ESTADUAL DO SUBST.TRIB.",oFont08N:oFont)
- oDanfe:Say(143,205,IIf(ValAtrib("oEmitente:_IEST:TEXT")<>"U",oEmitente:_IEST:TEXT,""),oFont08:oFont)
- oDanfe:Say(135,405,"CNPJ/CPF",oFont08N:oFont)
- Do Case
- Case ValAtrib("oEmitente:_CNPJ")=="O"
- cAux := TransForm(oEmitente:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case ValAtrib("oEmitente:_CPF")=="O"
- cAux := TransForm(oEmitente:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(143,405,cAux,oFont08:oFont)
- oDanfe:Say(161,002,"DADOS DO PRODUTO / SERVIと",oFont08N:oFont)
- oDanfe:Box(163,000,nColLim,603)
- nAuxH := 0
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[1])
- oDanfe:Say(171, nAuxH + 2, "COD. PROD",oFont08N:oFont)
- nAuxH += aTamCol[1]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[2])
- oDanfe:Say(171, nAuxH + 2, "DESCRIデO DO PROD./SERV.", oFont08N:oFont)
- nAuxH += aTamCol[2]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[3])
- oDanfe:Say(171, nAuxH + 2, "NCM/SH", oFont08N:oFont)
- nAuxH += aTamCol[3]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[4])
- If cMVCODREG == "1"
- oDanfe:Say(171, nAuxH + 2, "CSOSN", oFont08N:oFont)
- Else
- oDanfe:Say(171, nAuxH + 2, "CST", oFont08N:oFont)
- Endif
- nAuxH += aTamCol[4]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[5])
- oDanfe:Say(171, nAuxH + 2, "CFOP", oFont08N:oFont)
- nAuxH += aTamCol[5]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[6])
- oDanfe:Say(171, nAuxH + 2, "UN", oFont08N:oFont)
- nAuxH += aTamCol[6]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[7])
- oDanfe:Say(171, nAuxH + 2, "QUANT.", oFont08N:oFont)
- nAuxH += aTamCol[7]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[8])
- oDanfe:Say(171, nAuxH + 2, "V.UNITARIO", oFont08N:oFont)
- nAuxH += aTamCol[8]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[9])
- oDanfe:Say(171, nAuxH + 2, "V.TOTAL", oFont08N:oFont)
- nAuxH += aTamCol[9]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[10])
- oDanfe:Say(171, nAuxH + 2, "BC.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[10]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[11])
- oDanfe:Say(171, nAuxH + 2, "V.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[11]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[12])
- oDanfe:Say(171, nAuxH + 2, "V.IPI", oFont08N:oFont)
- nAuxH += aTamCol[12]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[13])
- oDanfe:Say(171, nAuxH + 2, "A.ICMS", oFont08N:oFont)
- nAuxH += aTamCol[13]
- oDanfe:Box(163, nAuxH, nColLim, nAuxH + aTamCol[14])
- oDanfe:Say(171, nAuxH + 2, "A.IPI", oFont08N:oFont)
- //Verifico se ainda existem Dados Adicionais a serem impressos
- nLenMensagens:= Len(aMensagem)
- IF (MV_PAR05 <> 1 .Or. (MV_PAR05 == 1 .And. lFimpar )).And. nMensagem <= nLenMensagens
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蛇ados Adicionais �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- oDanfe:Say(719,000,"DADOS ADICIONAIS",oFont08N:oFont)
- oDanfe:Box(721,000,865,351)
- oDanfe:Say(729,002,"INFORMAベES COMPLEMENTARES",oFont08N:oFont)
- nLin:= 741
- nLenMensagens:= Len(aMensagem)
- --nMensagem
- For nX := 1 To Min(nLenMensagens - nMensagem, MAXMSG)
- oDanfe:Say(nLin,002,aMensagem[nMensagem+nX],oFont08:oFont)
- nLin:= nLin+10
- Next nX
- nMensagem := nMensagem+nX
- oDanfe:Box(721+nLinhavers,350,865+nLinhavers,603)
- oDanfe:Say(729+nLinhavers,352,"RESERVADO AO FISCO",oFont08N:oFont)
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蚯ogotipo Rodape
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- if file(cLogoTotvs) .or. Resource2File ( cLogoTotvs, cStartPath+cLogoTotvs )
- oDanfe:SayBitmap(866,484,cLogoTotvs,120,20)
- endif
- // Seta o m嫞imo de itens para o MAXITEMP2
- nMaxItemP2 := MAXITEMP2
- Else
- // Seta o m嫞imo de itens para o MAXITEMP2F
- nMaxItemP2 := MAXITEMP2F
- EndIF
- If (!(nfolha-1)%2==0) .And. MV_PAR05==1
- If nY+69<nLenItens
- oDanfe:Say(875+nLinhavers,497,"CONTINUA NO VERSO")
- Endif
- End
- nL := 1
- EndIf
- nAuxH := 0
- If aAux[1][1][nY] == "-"
- oDanfe:Say(nLinha, nAuxH, Replicate("- ", 150), oFont08:oFont)
- Else
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][1][nY], oFont08:oFont )
- nAuxH += aTamCol[1]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][2][nY], oFont08:oFont) // DESCRICAO DO PRODUTO
- nAuxH += aTamCol[2]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][3][nY], oFont08:oFont) // NCM
- nAuxH += aTamCol[3]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][4][nY], oFont08:oFont) // CST
- nAuxH += aTamCol[4]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][5][nY], oFont08:oFont) // CFOP
- nAuxH += aTamCol[5]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][6][nY], oFont08:oFont) // UN
- nAuxH += aTamCol[6]
- // Workaround para falha no FWMSPrinter:GetTextWidth()
- nAuxH2 := len(aAux[1][7][nY]) + (nAuxH + (aTamCol[7]) - RetTamTex(aAux[1][7][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][7][nY], oFont08:oFont) // QUANT
- nAuxH += aTamCol[7]
- nAuxH2 := len(aAux[1][8][nY]) + (nAuxH + (aTamCol[8]) - RetTamTex(aAux[1][8][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][8][nY], oFont08:oFont) // V UNITARIO
- nAuxH += aTamCol[8]
- nAuxH2 := len(aAux[1][9][nY]) + (nAuxH + (aTamCol[9]) - RetTamTex(aAux[1][9][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][9][nY], oFont08:oFont) // V. TOTAL
- nAuxH += aTamCol[9]
- nAuxH2 := len(aAux[1][10][nY]) + (nAuxH + (aTamCol[10]) - RetTamTex(aAux[1][10][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][10][nY], oFont08:oFont) // BC. ICMS
- nAuxH += aTamCol[10]
- nAuxH2 := len(aAux[1][11][nY]) + (nAuxH + (aTamCol[11]) - RetTamTex(aAux[1][11][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][11][nY], oFont08:oFont) // V. ICMS
- nAuxH += aTamCol[11]
- nAuxH2 := len(aAux[1][12][nY]) + (nAuxH + (aTamCol[12]) - RetTamTex(aAux[1][12][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][12][nY], oFont08:oFont) // V.IPI
- nAuxH += aTamCol[12]
- nAuxH2 := len(aAux[1][13][nY]) + (nAuxH + (aTamCol[13]) - RetTamTex(aAux[1][13][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][13][nY], oFont08:oFont) // A.ICMS
- nAuxH += aTamCol[13]
- nAuxH2 := len(aAux[1][14][nY]) + (nAuxH + (aTamCol[14]) - RetTamTex(aAux[1][14][nY], oFont08:oFont, oDanfe))
- oDanfe:Say(nLinha, nAuxH2, aAux[1][14][nY], oFont08:oFont) // A.IPI
- EndIf
- nLinha :=nLinha + 10
- Next nY
- nLenMensagens := Len(aMensagem)
- While nMensagem <= nLenMensagens
- DanfeCpl(oDanfe,aItens,aMensagem,@nItem,@nMensagem,oNFe,oIdent,oEmitente,@nFolha,nFolhas,cCodAutSef,oNfeDPEC,cCodAutDPEC,cDtHrRecCab,cLogoD,aUF,cDadosProt)
- EndDo
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蚶inaliza a Impress緌 �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If lPreview
- // oDanfe:Preview()
- EndIf
- oDanfe:EndPage()
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //袍ratamento para nao imprimir DANFEs diferentes na mesma folha, uma na FRENTE e outra no VERSO. |
- //| Isso quando a impressora estiver configurada para frente e verso �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- If MV_PAR05==1 .And. MV_PAR01 <> MV_PAR02 .And. (--nFolha)%2<>0
- oDanfe:StartPage()
- oDanfe:EndPage()
- EndIf
- Return(.T.)
- /*
- Private oNF := oNFe:_NFe
- Private oDPEC :=oNfeDPEC
- Default cCodAutSef := ""
- Default cCodAutDPEC:= ""
- Default cDtHrRecCab:= ""
- Default dDtReceb := CToD("")
- */
- //Impressao do Complemento da NFe
- Static Function DanfeCpl(oDanfe,aItens,aMensagem,nItem,nMensagem,oNFe,oIdent,oEmitente,nFolha,nFolhas,cCodAutSef,oNfeDPEC,cCodAutDPEC,cDtHrRecCab,cLogoD,aUF,cDadosProt)
- Local nX := 0
- Local nLinha := 0
- Local nLenMensagens := Len(aMensagem)
- Local nItemOld := nItem
- Local nMensagemOld := nMensagem
- Local nForMensagens := 0
- Local lMensagens := .F.
- Local cLogo := FisxLogo("1")
- Local cChaveCont := ""
- Local lConverte := GetNewPar("MV_CONVERT",.F.)
- Local lMv_Logod := If(GetNewPar("MV_LOGOD", "N" ) == "S", .T., .F. )
- Local cCNPJCPF := ""
- Local cUF := ""
- Local cDataEmi := ""
- Local cTPEmis := ""
- Local cValIcm := ""
- Local cICMSp := ""
- Local cICMSs := ""
- local cLogoTotvs := "Powered_by_TOTVS.bmp"
- local cStartPath := GetSrvProfString("Startpath","")
- local lNFCE := Substr(oNFe:_NFe:_InfNfe:_ID:Text,24,2) == "65"
- If (nLenMensagens - (nMensagemOld - 1)) > 0
- lMensagens := .T.
- EndIf
- //Dados Adicionais segunda parte em diante
- If lMensagens
- nLenMensagens := Len(aMensagem)
- nForMensagens := Min(nLenMensagens, MAXITEMP2 + (nMensagemOld - 1) - (nItem - nItemOld))
- oDanfe:EndPage()
- oDanfe:StartPage()
- nLinha :=180
- oDanfe:Say(160,000,"DADOS ADICIONAIS",oFont08N:oFont)
- oDanfe:Box(172,000,865,351)
- oDanfe:Say(170,002,"INFORMAベES COMPLEMENTARES",oFont08N:oFont)
- oDanfe:Box(172,350,865,603)
- oDanfe:Say(170,352,"RESERVADO AO FISCO",oFont08N:oFont)
- //Logotipo Rodape
- if file(cLogoTotvs) .or. Resource2File ( cLogoTotvs, cStartPath+cLogoTotvs )
- oDanfe:SayBitmap(866,484,cLogoTotvs,120,20)
- endif
- oDanfe:Box(000,000,095,250)
- oDanfe:Say(010,096, "Identifica誽o do emitente",oFont12N:oFont)
- nLinCalc := 023
- cStrAux := AllTrim(NoChar(oEmitente:_xNome:Text,lConverte))
- nForTo := Len(cStrAux)/24
- nForTo := Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1,Round(nForTo,0))
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*24)+1),24), oFont12N:oFont )
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xLgr:Text,lConverte))+", "+AllTrim(oEmitente:_EnderEmit:_Nro:Text)
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- If Type("oEmitente:_EnderEmit:_xCpl") <> "U"
- cStrAux := "Complemento: "+AllTrim(NoChar(oEmitente:_EnderEmit:_xCpl:TEXT,lConverte))
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte))
- If Type("oEmitente:_EnderEmit:_Cep")<>"U"
- cStrAux += " Cep:"+TransForm(oEmitente:_EnderEmit:_Cep:Text,"@r 99999-999")
- EndIf
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(Type("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- Else
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xBairro:Text+" Cep:"+TransForm(IIF(Type("oEmitente:_EnderEmit:_Cep")=="U","",oEmitente:_EnderEmit:_Cep:Text),"@r 99999-999"),oFont08N:oFont)
- nLinCalc+=10
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(Type("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- EndIf
- oDanfe:Box(000,248,095,351)
- oDanfe:Say(013,275, "DANFE",oFont18N:oFont)
- oDanfe:Say(023,255, "DOCUMENTO AUXILIAR DA",oFont07:oFont)
- if lNFCE
- oDanfe:Say(033,255, "NOTA FISCAL DE CONSUMIDOR",oFont07:oFont)
- else
- oDanfe:Say(033,255, "NOTA FISCAL ELETR偡ICA",oFont07:oFont)
- endif
- oDanfe:Say(043,255, "0-ENTRADA",oFont08:oFont)
- oDanfe:Say(053,255, "1-SA沝A" ,oFont08:oFont)
- oDanfe:Box(037,305,047,315)
- oDanfe:Say(045,307, oIdent:_TpNf:Text,oFont08N:oFont)
- oDanfe:Say(062,255,"N. "+StrZero(Val(oIdent:_NNf:Text),9),oFont10N:oFont)
- oDanfe:Say(072,255,"S仂IE "+SubStr(oIdent:_Serie:Text,1,3),oFont10N:oFont)
- oDanfe:Say(082,255,"FOLHA "+StrZero(nFolha,2)+"/"+StrZero(nFolhas,2),oFont10N:oFont)
- oDanfe:Box(000,350,095,603)
- oDanfe:Box(000,350,040,603)
- oDanfe:Box(040,350,062,603)
- oDanfe:Box(063,350,095,603)
- oDanfe:Say(058,355,TransForm(SubStr(oNF:_InfNfe:_ID:Text,4),"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999"),oFont12N:oFont)
- oDanfe:Say(048,355,"CHAVE DE ACESSO DA "+iif(lNFCE,"NFC-E","NF-E"),oFont12N:oFont)
- nFontSize := 28
- oDanfe:Code128C(036,370,SubStr(oNF:_InfNfe:_ID:Text,4), nFontSize )
- If lMv_Logod
- oDanfe:SayBitmap(000,003,cLogoD,090,090)
- Else
- oDanfe:SayBitmap(000,003,cLogo,090,090)
- EndIf
- If Empty(cChaveCont)
- oDanfe:Say(075,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(085,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- If !Empty(cCodAutDPEC)
- oDanfe:Say(075,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(085,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- Endif
- If nFolha == 1
- If !Empty(cCodAutDPEC)
- nFontSize := 28
- oDanfe:Code128C(093,370,cCodAutDPEC, nFontSize )
- Endif
- Endif
- // inicio do segundo codigo de barras ref. a transmissao CONTIGENCIA OFF LINE
- If !Empty(cChaveCont) .And. Empty(cCodAutDPEC) .And. !(Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900)
- If nFolha == 1
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(093,370,cChaveCont, nFontSize )
- EndIf
- Else
- If !Empty(cChaveCont)
- nFontSize := 28
- oDanfe:Code128C(093,370,cChaveCont, nFontSize )
- EndIf
- EndIf
- EndIf
- oDanfe:Box(100,000,123,603)
- oDanfe:Box(100,000,123,300)
- oDanfe:Say(109,002,"NATUREZA DA OPERAデO",oFont08N:oFont)
- oDanfe:Say(119,002,oIdent:_NATOP:TEXT,oFont08:oFont)
- If(!Empty(cCodAutDPEC))
- oDanfe:Say(109,300,"N渧ERO DE REGISTRO DPEC",oFont08N:oFont)
- Endif
- If(((Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900).And.(oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"2") .Or. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"1")
- oDanfe:Say(109,302,"PROTOCOLO DE AUTORIZAデO DE USO",oFont08N:oFont)
- Endif
- If((oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25")
- oDanfe:Say(109,300,"DADOS DA "+iif(lNFCE,"NFC-E","NF-E"),oFont08N:oFont)
- Endif
- If !Empty(cCodAutDPEC) .And. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"4"
- cDataEmi := Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",Substr(oNFe:_NFE:_INFNFE:_IDE:_DHEMI:Text,9,2),Substr(oNFe:_NFE:_INFNFE:_IDE:_DEMI:Text,9,2))
- cTPEmis := "4"
- If Type("oDPEC:_ENVDPEC:_INFDPEC:_RESNFE") <> "U"
- cUF := aUF[aScan(aUF,{|x| x[1] == oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_UF:Text})][02]
- cValIcm := StrZero(Val(StrTran(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VNF:TEXT,".","")),14)
- cICMSp := iif(Val(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VICMS:TEXT)>0,"1","2")
- cICMSs := iif(Val(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VST:TEXT)>0,"1","2")
- ElseIf type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST") <> "U" //EPEC NFE
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_UF:TEXT") <> "U"
- cUF := aUF[aScan(aUF,{|x| x[1] == oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_UF:TEXT})][02]
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VNF:TEXT") <> "U"
- cValIcm := StrZero(Val(StrTran(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VNF:TEXT,".","")),14)
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VICMS:TEXT") <> "U"
- cICMSp:= IIf(Val(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VICMS:TEXT) > 0,"1","2")
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VST:TEXT") <> "U"
- cICMSs := IIf(Val(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VST:TEXT )> 0,"1","2")
- EndIf
- EndIf
- ElseIF (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25"
- cUF := aUF[aScan(aUF,{|x| x[1] == oNFe:_NFE:_INFNFE:_DEST:_ENDERDEST:_UF:Text})][02]
- cDataEmi := Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",Substr(oNFe:_NFE:_INFNFE:_IDE:_DHEMI:Text,9,2),Substr(oNFe:_NFE:_INFNFE:_IDE:_DEMI:Text,9,2))
- cTPEmis := oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT
- cValIcm := StrZero(Val(StrTran(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VNF:TEXT,".","")),14)
- cICMSp := iif(Val(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VICMS:TEXT)>0,"1","2")
- cICMSs :=iif(Val(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VST:TEXT)>0,"1","2")
- EndIf
- If !Empty(cUF) .And. !Empty(cDataEmi) .And. !Empty(cTPEmis) .And. !Empty(cValIcm) .And. !Empty(cICMSp) .And. !Empty(cICMSs)
- If Type("oNF:_InfNfe:_DEST:_CNPJ:Text")<>"U"
- cCNPJCPF := oNF:_InfNfe:_DEST:_CNPJ:Text
- If cUf == "99"
- cCNPJCPF := STRZERO(val(cCNPJCPF),14)
- EndIf
- ElseIf Type("oNF:_INFNFE:_DEST:_CPF:Text")<>"U"
- cCNPJCPF := oNF:_INFNFE:_DEST:_CPF:Text
- cCNPJCPF := STRZERO(val(cCNPJCPF),14)
- Else
- cCNPJCPF := ""
- EndIf
- cChaveCont += cUF+cTPEmis+cCNPJCPF+cValIcm+cICMSp+cICMSs+cDataEmi
- cChaveCont := cChaveCont+Modulo11(cChaveCont)
- EndIf
- oDanfe:Say(119,302,cDadosProt,oFont08:oFont)
- nFolha++
- oDanfe:Box(126,000,153,603)
- oDanfe:Box(126,000,153,200)
- oDanfe:Box(126,200,153,400)
- oDanfe:Box(126,400,153,603)
- oDanfe:Say(135,002,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(143,002,IIf(Type("oEmitente:_IE:TEXT")<>"U",oEmitente:_IE:TEXT,""),oFont08:oFont)
- oDanfe:Say(135,205,"INSC.ESTADUAL DO SUBST.TRIB.",oFont08N:oFont)
- oDanfe:Say(143,205,IIf(Type("oEmitente:_IEST:TEXT")<>"U",oEmitente:_IEST:TEXT,""),oFont08:oFont)
- oDanfe:Say(135,405,"CNPJ/CPF",oFont08N:oFont)
- Do Case
- Case Type("oEmitente:_CNPJ")=="O"
- cAux := TransForm(oEmitente:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oEmitente:_CPF")=="O"
- cAux := TransForm(oEmitente:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(143,405,cAux,oFont08:oFont)
- For nX := nMensagem To nForMensagens
- oDanfe:Say(nLinha,002,aMensagem[nX],oFont08:oFont)
- nMensagem++
- nLinha:= nLinha+ 10
- Next nX
- EndIf
- //Finalizacao da pagina do objeto grafico
- oDanfe:EndPage()
- Return(.T.)
- Static Function GetXML(cIdEnt,aIdNFe,cModalidade, lJob)
- Local aRetorno := {}
- Local aDados := {}
- Local cURL := PadR(GetNewPar("MV_SPEDURL","http://localhost:8080/sped"),250)
- Local cModel := "55"
- Local nZ := 0
- Local nCount := 0
- Local oWS
- default lJob := .F.
- If Empty(cModalidade)
- oWS := WsSpedCfgNFe():New()
- oWS:cUSERTOKEN := "TOTVS"
- oWS:cID_ENT := cIdEnt
- oWS:nModalidade:= 0
- oWS:_URL := AllTrim(cURL)+"/SPEDCFGNFe.apw"
- oWS:cModelo := cModel
- If oWS:CFGModalidade()
- cModalidade := SubStr(oWS:cCfgModalidadeResult,1,1)
- else
- cModalidade := ""
- endif
- EndIf
- oWs := nil
- For nZ := 1 To len(aIdNfe)
- nCount++
- aDados := executeRetorna( aIdNfe[nZ], cIdEnt , , lJob)
- if ( nCount == 10 )
- delClassIntF()
- nCount := 0
- endif
- aAdd(aRetorno,aDados)
- Next nZ
- Return(aRetorno)
- Static Function ConvDate(cData)
- Local dData
- cData := StrTran(cData,"-","")
- dData := Stod(cData)
- Return PadR(StrZero(Day(dData),2)+ "/" + StrZero(Month(dData),2)+ "/" + StrZero(Year(dData),4),15)
- /*
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控奼迋迋迋迋迕迋迋迋迋迋冞迋迋迋敊迋迋迋迋迋迋迋迋迋豖迋迋迋敊迋迋迋迋迋迋跼�
- 控摺rograma 蛇ANFE 態utor 蛉arcos Taranta � Data � 10/01/09 滷�
- 控昅迋迋迋迋阹迋迋迋迋迋庋迋迋迋玵迋迋迋迋迋迋迋迋迋虮迋迋迋玵迋迋迋迋迋迋僚�
- 控慣esc. 袈ega uma posi誽o (nTam) na string cString, e retorna o 滷�
- 控� 販aractere de espa蔞 anterior. 滷�
- 控昅迋迋迋迋阹迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋僚�
- 控摻so � AP 滷�
- 控¬迋迋迋迋迍迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋摹�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔�
- */
- Static Function EspacoAt(cString, nTam)
- Local nRetorno := 0
- Local nX := 0
- /**
- * Caso a posi誽o (nTam) for maior que o tamanho da string, ou for um valor
- * inv嫮ido, retorna 0.
- */
- If nTam > Len(cString) .Or. nTam < 1
- nRetorno := 0
- Return nRetorno
- EndIf
- /**
- * Procura pelo caractere de espa蔞 anterior a posi誽o e retorna a posi誽o
- * dele.
- */
- nX := nTam
- While nX > 1
- If Substr(cString, nX, 1) == " "
- nRetorno := nX
- Return nRetorno
- EndIf
- nX--
- EndDo
- /**
- * Caso n緌 encontre nenhum caractere de espa蔞, � retornado 0.
- */
- nRetorno := 0
- Return nRetorno
- /*
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控矬闡闡闡闡鐃闡闡闡闡闡鐃闡闡闡鐃闡闡闡闡闡闡闡闡闡闡闡薩闡闡鐃闡闡闡闡闡膨�
- 控蚶un�o � DANFE_V � Autor � Luana Ferrari � Data � 20/07/10 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡鐘闡闡闡鐘闡闡闡闡闡闡闡闡闡闡闡謐闡闡鐘闡闡闡闡闡敢�
- 控蛇escri�o � Funcao utilizada para verificar a ultima versao do fonte 陰�
- 控� � DANFEII..PRW aplicado no rpo do cliente, assim verificando 陰�
- 控� � a necessidade de uma atualizacao neste fonte. 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� Uso � FAT/FIS 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� DATA � Programador 蛉anutencao efetuada 陰�
- 控藥闡闡闡闡霰闡闡闡闡闡闡闡霰闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡敢�
- 控� � � 陰�
- 控斂闡闡闡闡鐘闡闡闡闡闡闡闡鐘闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡棱�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- */
- User Function DANFE_V
- //Local nRet := 20100720 // 20 de Julho de 2010 # Luana Ferrari
- //Local nRet := 20100929 // 29 de Setembro de 2010 # Roberto Souza
- Local nRet := 20130417 // 17 de Abril de 2013 # Rafael Iaquinto
- Return nRet
- /*
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控奼迋迋迋迋迕迋迋迋迋迋冞迋迋迋敊迋迋迋迋迋迋迋迋迋豖迋迋迋敊迋迋迋迋迋迋跼�
- 控摺rograma 蛇ANFE 態utor 蚶abio Santana � Data � 04/10/10 滷�
- 控昅迋迋迋迋阹迋迋迋迋迋庋迋迋迋玵迋迋迋迋迋迋迋迋迋虮迋迋迋玵迋迋迋迋迋迋僚�
- 控慣esc. 彪onverte caracteres espceiais 滷�
- 控昅迋迋迋迋阹迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋僚�
- 控摻so � AP 滷�
- 控¬迋迋迋迋迍迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋摹�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- */
- STATIC FUNCTION NoChar(cString,lConverte)
- Default lConverte := .F.
- If lConverte
- cString := (StrTran(cString,"<","<"))
- cString := (StrTran(cString,">",">"))
- cString := (StrTran(cString,"&","&"))
- cString := (StrTran(cString,""",'"'))
- cString := (StrTran(cString,"'","'"))
- EndIf
- Return(cString)
- /*
- 嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈嗈�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 控奼迋迋迋迋迕迋迋迋迋迋冞迋迋迋敊迋迋迋迋迋迋迋迋迋豖迋迋迋敊迋迋迋迋迋迋跼�
- 控摺rograma 蛇ANFEIII 態utor 蛉icrosiga � Data � 12/17/10 滷�
- 控昅迋迋迋迋阹迋迋迋迋迋庋迋迋迋玵迋迋迋迋迋迋迋迋迋虮迋迋迋玵迋迋迋迋迋迋僚�
- 控慣esc. � Tratamento para o c鏚igo do item 滷�
- 控� � 滷�
- 控昅迋迋迋迋阹迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋僚�
- 控摻so � AP 滷�
- 控¬迋迋迋迋迍迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋迋摹�
- 控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控控�
- 葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔葔�
- */
- STATIC FUNCTION MaxCod(cString,nTamanho)
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- //袍ratamento para saber quantos caracteres ir緌 caber na linha �
- //� visto que letras ocupam mais espa蔞 do que os n𤦤eros. �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡�
- Local nMax := 0
- Local nY := 0
- Default nTamanho := 45
- For nMax := 1 to Len(cString)
- If IsAlpha(SubStr(cString,nMax,1)) .And. SubStr(cString,nMax,1) $ "MOQW" // Caracteres que ocupam mais espa蔞 em pixels
- nY += 7
- Else
- nY += 5
- EndIf
- If nY > nTamanho // � o m嫞imo de espa蔞 para uma coluna
- nMax--
- Exit
- EndIf
- Next
- Return nMax
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} RetTamCol
- Retorna um array do mesmo tamanho do array de entrada, contendo as
- medidas dos maiores textos para c嫮culo de colunas.
- @author Marcos Taranta
- @since 24/05/2011
- @version 1.0
- @param aCabec Array contendo as strings de cabe蓷lho das colunas
- aValores Array contendo os valores que ser緌 populados nas
- colunas.
- oPrinter Objeto de impress緌 instanciado para utilizar o m彋odo
- nativo de c嫮culo de tamanho de texto.
- oFontCabec Objeto da fonte que ser� utilizada no cabe蓷lho.
- oFont Objeto da fonte que ser� utilizada na impress緌.
- @return aTamCol Array contendo os tamanhos das colunas baseados nos
- valores.
- /*/
- //-----------------------------------------------------------------------
- Static Function RetTamCol(aCabec, aValores, oPrinter, oFontCabec, oFont)
- Local aTamCol := {}
- Local nAux := 0
- Local nX := 0
- /* Valores fixados, devido erro de impr. quando S.O est� com visualiza誽o <> de 100%
- */
- aTamCol := {50,;
- 150,;
- 33,;
- iif(aCabec[4] == "CSOSN", 22, 16),; // CST/CSON
- 22,;
- 14,;
- iif(aCabec[4] == "CSOSN", 33, 35),; // Quant.
- iif(aCabec[4] == "CSOSN", 49, 53),; // V.Unit嫫io
- 38,;
- 37,;
- 32,;
- 32,;
- 24,;
- 24}
- // Checa se os campos completam a p墔ina, sen緌 joga o resto na coluna da
- // descri誽o de produtos/servi蔞s
- nAux := 0
- For nX := 1 To Len(aTamCol)
- nAux += aTamCol[nX]
- Next nX
- If nAux < 603
- aTamCol[2] += 603 - nAux
- EndIf
- If nAux > 603
- aTamCol[2] -= nAux - 603
- EndIf
- Return aTamCol
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} RetTamTex
- Retorna o tamanho em pixels de uma string. (Workaround para o GetTextWidth)
- @author Marcos Taranta
- @since 24/05/2011
- @version 1.0
- @param cTexto Texto a ser medido.
- oFont Objeto instanciado da fonte a ser utilizada.
- oPrinter Objeto de impress緌 instanciado.
- @return nTamanho Tamanho em pixels da string.
- /*/
- //-----------------------------------------------------------------------
- Static Function RetTamTex(cTexto, oFont, oPrinter)
- Local nTamanho := 0
- //Local oFontSize:= FWFontSize():new()
- Local cAux := ""
- Local cValor := "0123456789"
- Local cVirgPonto := ",."
- Local cPerc := "%"
- Local nX := 0
- //nTamanho := oPrinter:GetTextWidth(cTexto, oFont)
- //nTamanho := oFontSize:getTextWidth( cTexto, oFont:Name, oFont:nWidth, oFont:Bold, oFont:Italic )
- /*O calculo abaixo � o mesmo realizado pela oFontSize:getTextWidth
- Retorna 5 para numeros (0123456789), 2 para virgula e ponto (, .) e 7 para percentual (%)
- O ajuste foi realizado para diminuir o tempo na impress緌 de um danfe com muitos itens*/
- For nX:= 1 to len(cTexto)
- cAux:= Substr(cTexto,nX,1)
- If cAux $ cValor
- nTamanho += 5
- ElseIf cAux $ cVirgPonto
- nTamanho += 2
- ElseIf cAux $ cPerc
- nTamanho += 7
- EndIf
- Next nX
- nTamanho := Round(nTamanho, 0)
- Return nTamanho
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} PosQuebrVal
- Retorna a posi誽o onde um valor deve ser quebrado
- @author Marcos Taranta
- @since 27/05/2011
- @version 1.0
- @param cTexto Texto a ser medido.
- @return nPos Posi誽o aonde o valor deve ser quebrado.
- /*/
- //-----------------------------------------------------------------------
- Static Function PosQuebrVal(cTexto)
- Local nPos := 0
- If Empty(cTexto)
- Return 0
- EndIf
- If Len(cTexto) <= MAXVALORC
- Return Len(cTexto)
- EndIf
- If SubStr(cTexto, MAXVALORC, 1) $ ",."
- nPos := MAXVALORC - 2
- Else
- nPos := MAXVALORC
- EndIf
- Return nPos
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} MontaEnd
- Retorna o endere蔞 completo do cliente (Logradouro + N𤦤ero + Complemento)
- @author Renan Franco
- @since 11/07/2019
- @version 1.0
- @param oMontaEnd Objeto que possui _xLgr, _xcpl e _xNRO.
- @return cEndereco Endere蔞 concatenado. Ex.: AV BRAZ LEME, 1000, S艿ECA MALL
- /*/
- //-----------------------------------------------------------------------
- Static Function MontaEnd(oMontaEnd)
- Local lConverte := GetNewPar("MV_CONVERT",.F.)
- Local cEndereco := ""
- Default oMontaEnd := Nil
- Private oEnd := oMontaEnd
-
- if oEnd <> Nil .and. ValType(oEnd)=="O"
- cEndereco := NoChar(oEnd:_Xlgr:Text,lConverte)
-
- If " SN" $ (UPPER (oEnd:_Xlgr:Text)) .Or. ",SN" $ (UPPER (oEnd:_Xlgr:Text)) .Or. "S/N" $ (UPPER (oEnd:_Xlgr:Text))
- cEndereco += IIf(type("oEnd:_xcpl") == "O", ", " + NoChar(oEnd:_xcpl:Text,lConverte), " ")
- Else
- cEndereco += ", " + NoChar(oEnd:_NRO:Text,lConverte) + IIf(type("oEnd:_xcpl") == "O", ", " + NoChar(oEnd:_xcpl:Text,lConverte), " ")
- Endif
- Endif
- Return cEndereco
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} executeRetorna
- Executa o retorna de notas
- @author Henrique Brugugnoli
- @since 17/01/2013
- @version 1.0
- @param cID ID da nota que sera retornado
- @return aRetorno Array com os dados da nota
- /*/
- //-----------------------------------------------------------------------
- static function executeRetorna( aNfe, cIdEnt, lUsacolab, lJob)
- Local aRetorno := {}
- Local aDados := {}
- Local aIdNfe := {}
- Local aWsErro := {}
- Local cAviso := ""
- Local cCodRetNFE := ""
- Local cDHRecbto := ""
- Local cDtHrRec := ""
- Local cDtHrRec1 := ""
- Local cErro := ""
- Local cModTrans := ""
- Local cProtDPEC := ""
- Local cProtocolo := ""
- Local cMsgNFE := ""
- local cMsgRet := ""
- Local cRetDPEC := ""
- Local cRetorno := ""
- Local cURL := PadR(GetNewPar("MV_SPEDURL","http://localhost:8080/sped"),250)
- Local cCodStat := ""
- Local dDtRecib := CToD("")
- Local nDtHrRec1 := 0
- Local nX := 0
- Local nY := 0
- Local nZ := 1
- Local nPos := 0
- Local oWS
- Private oDHRecbto
- Private oNFeRet
- Private oDoc
- default lUsacolab := .F.
- default lJob := .F.
- aAdd(aIdNfe,aNfe)
- if !lUsacolab
- oWS:= WSNFeSBRA():New()
- oWS:cUSERTOKEN := "TOTVS"
- oWS:cID_ENT := cIdEnt
- oWS:nDIASPARAEXCLUSAO := 0
- oWS:_URL := AllTrim(cURL)+"/NFeSBRA.apw"
- oWS:oWSNFEID := NFESBRA_NFES2():New()
- oWS:oWSNFEID:oWSNotas := NFESBRA_ARRAYOFNFESID2():New()
- aadd(aRetorno,{"","",aIdNfe[nZ][4]+aIdNfe[nZ][5],"","","",CToD(""),"","","",""})
- aadd(oWS:oWSNFEID:oWSNotas:oWSNFESID2,NFESBRA_NFESID2():New())
- Atail(oWS:oWSNFEID:oWSNotas:oWSNFESID2):cID := aIdNfe[nZ][4]+aIdNfe[nZ][5]
- If oWS:RETORNANOTASNX()
- If Len(oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5) > 0
- For nX := 1 To Len(oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5)
- cRetorno := oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:oWSNFE:CXML
- cProtocolo := oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:oWSNFE:CPROTOCOLO
- cDHRecbto := oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:oWSNFE:CXMLPROT
- oNFeRet := XmlParser(cRetorno,"_",@cAviso,@cErro)
- cModTrans := IIf(ValAtrib("oNFeRet:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT") <> "U",IIf (!Empty("oNFeRet:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT"),oNFeRet:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT,1),1)
- cCodStat := ""
- If ValType(oWs:OWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:OWSDPEC)=="O"
- cRetDPEC := oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:oWSDPEC:CXML
- cProtDPEC := oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:oWSDPEC:CPROTOCOLO
- EndIf
-
- //Tratamento para gravar a hora da transmissao da NFe
- If !Empty(cProtocolo)
- oDHRecbto := XmlParser(cDHRecbto,"","","")
- cDtHrRec := IIf(ValAtrib("oDHRecbto:_ProtNFE:_INFPROT:_DHRECBTO:TEXT")<>"U",oDHRecbto:_ProtNFE:_INFPROT:_DHRECBTO:TEXT,"")
- nDtHrRec1 := RAT("T",cDtHrRec)
- cMsgRet := IIf(ValAtrib("oDHRecbto:_ProtNFE:_INFPROT:_XMSG:TEXT")<>"U",oDHRecbto:_ProtNFE:_INFPROT:_XMSG:TEXT,"")
- cCodStat := IIf(ValAtrib("oDHRecbto:_ProtNFE:_INFPROT:_CSTAT:TEXT")<>"U",oDHRecbto:_ProtNFE:_INFPROT:_CSTAT:TEXT,"")
- If nDtHrRec1 <> 0
- cDtHrRec1 := SubStr(cDtHrRec,nDtHrRec1+1)
- dDtRecib := SToD(StrTran(SubStr(cDtHrRec,1,AT("T",cDtHrRec)-1),"-",""))
- EndIf
- AtuSF2Hora(cDtHrRec1,aIdNFe[nZ][5]+aIdNFe[nZ][4]+aIdNFe[nZ][6]+aIdNFe[nZ][7])
- EndIf
- nY := aScan(aIdNfe,{|x| x[4]+x[5] == SubStr(oWs:oWSRETORNANOTASNXRESULT:OWSNOTAS:OWSNFES5[nX]:CID,1,Len(x[4]+x[5]))})
- oWS:cIdInicial := aIdNfe[nZ][4]+aIdNfe[nZ][5]
- oWS:cIdFinal := aIdNfe[nZ][4]+aIdNfe[nZ][5]
- If oWS:MONITORFAIXA()
- nPos := 0
- aWsErro := {}
- If !Empty(cProtocolo) .AND. !Empty(cCodStat)
- aWsErro := oWS:OWSMONITORFAIXARESULT:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE
- For nPos := 1 To Len(aWsErro)
- If Alltrim(aWsErro[nPos]:CCODRETNFE) == Alltrim(cCodStat)
- Exit
- Endif
- Next
- Endif
- If nPos > 0 .And. nPos <= Len(aWsErro)
- cCodRetNFE := oWS:oWsMonitorFaixaResult:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE[nPos]:CCODRETNFE
- cMsgNFE := oWS:oWsMonitorFaixaResult:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE[nPos]:CMSGRETNFE
- Else
- cCodRetNFE := oWS:oWsMonitorFaixaResult:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE[len(oWS:oWsMonitorFaixaResult:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE)]:CCODRETNFE
- cMsgNFE := oWS:oWsMonitorFaixaResult:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE[len(oWS:oWsMonitorFaixaResult:OWSMONITORNFE[1]:OWSERRO:OWSLOTENFE)]:CMSGRETNFE
- EndIf
- endif
- If nY > 0
- aRetorno[nY][1] := cProtocolo
- aRetorno[nY][2] := cRetorno
- aRetorno[nY][4] := cRetDPEC
- aRetorno[nY][5] := cProtDPEC
- aRetorno[nY][6] := cDtHrRec1
- aRetorno[nY][7] := dDtRecib
- aRetorno[nY][8] := cModTrans
- aRetorno[nY][9] := cCodRetNFE
- aRetorno[nY][10]:= cMsgNFE
- aRetorno[nY][11]:= cMsgRet
- EndIf
- cRetDPEC := ""
- cProtDPEC:= ""
- Next nX
- EndIf
- Elseif !lJob
- Aviso("DANFE",IIf(Empty(GetWscError(3)),GetWscError(1),GetWscError(3)),{"OK"},3)
- EndIf
- else
- oDoc := ColaboracaoDocumentos():new()
- oDoc:cModelo := "NFE"
- oDoc:cTipoMov := "1"
- oDoc:cIDERP := aIdNfe[nZ][4]+aIdNfe[nZ][5]+FwGrpCompany()+FwCodFil()
- aadd(aRetorno,{"","",aIdNfe[nZ][4]+aIdNfe[nZ][5],"","","",CToD(""),"","","",""})
- if odoc:consultar()
- aDados := ColDadosNf(1)
- if !Empty(oDoc:cXMLRet)
- cRetorno := oDoc:cXMLRet
- else
- cRetorno := oDoc:cXml
- endif
- aDadosXml := ColDadosXMl(cRetorno, aDados, @cErro, @cAviso)
- if '<obsCont xCampo="nRegDPEC">' $ cRetorno
- aDadosXml[9] := SubStr(cRetorno,At('<obsCont xCampo="nRegDPEC"><xTexto>',cRetorno)+35,15)
- endif
- cProtocolo := aDadosXml[3]
- cModTrans := IIF(Empty(aDadosXml[5]),aDadosXml[7],aDadosXml[5])
- cCodRetNFE := aDadosXml[1]
- cMsgNFE := iif (aDadosXml[2]<> nil ,aDadosXml[2],"")
- cMsgRet := aDadosXml[11]
- //Dados do DEPEC
- If !Empty( aDadosXml[9] )
- cRetDPEC := cRetorno
- cProtDPEC := aDadosXml[9]
- EndIf
- //Tratamento para gravar a hora da transmissao da NFe
- If !Empty(cProtocolo)
- cDtHrRec := aDadosXml[4]
- nDtHrRec1 := RAT("T",cDtHrRec)
- If nDtHrRec1 <> 0
- cDtHrRec1 := SubStr(cDtHrRec,nDtHrRec1+1)
- dDtRecib := SToD(StrTran(SubStr(cDtHrRec,1,AT("T",cDtHrRec)-1),"-",""))
- EndIf
- AtuSF2Hora(cDtHrRec1,aIdNFe[nZ][5]+aIdNFe[nZ][4]+aIdNFe[nZ][6]+aIdNFe[nZ][7])
- EndIf
- aRetorno[1][1] := cProtocolo
- aRetorno[1][2] := cRetorno
- aRetorno[1][4] := cRetDPEC
- aRetorno[1][5] := cProtDPEC
- aRetorno[1][6] := cDtHrRec1
- aRetorno[1][7] := dDtRecib
- aRetorno[1][8] := cModTrans
- aRetorno[1][9] := cCodRetNFE
- aRetorno[1][10]:= cMsgNFE
- aRetorno[1][11]:= cMsgRet
- cRetDPEC := ""
- cProtDPEC:= ""
- endif
- endif
- oWS := Nil
- oDHRecbto := Nil
- oNFeRet := Nil
- return aRetorno[len(aRetorno)]
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} SimpDanfe
- Impressao do formulario DANFE grafico conforme laytout no formato
- simplificado.
- @author Rafael Iaquinto
- @since 17.04.2013
- @version 10
- @param oDanfe Objeto FWMSPrinter, para desenho do documento.
- @param oNfe Objeto do XML da NF-e
- @param cCodAutSef C鏚igo de autoriza誽o da NF-e
- @param cModalidade Modalidade de transmiss緌 da NF-e
- @param oNfeDPEC Objeto do XML do DPEC.
- @param cCodAutDPEC Codigo de autoriza誽o do DPEC
- @param cDtHrRecCab Hora de Recebimento da NF-e
- @param dDtReceb Data de recebimento da NF-e
- @param aNota Array com informa踥es do documento a ser impresso.
- @return .T.
- /*/
- //-----------------------------------------------------------------------
- Static Function SimpDanfe(oDanfe,oNfe,cCodAutSef,cModalidade,oNfeDPEC,cCodAutDPEC,cDtHrRecCab,dDtReceb,aNota)
- Local cLogo := FisxLogo("1")
- Local cUF := ""
- Local cDataEmi := ""
- Local cTPEmis := ""
- Local cValIcm := ""
- Local cICMSp := ""
- Local cICMSs := ""
- Local cChaveCont := ""
- Local cDadosProt := ""
- Local nX := 0
- Local nY := 0
- Local nZ := 0
- Local nFolha := 1
- Local nFolhas := 0
- Local nMaxDes := 54
- Local nMaxI := 066 //MAXIMO DE ITENS PRIMEIRA PAGINA
- Local nMaxI2 := 080 //MAXIMO DE ITENS SEGUNDA PAG. SE FOR O VERSO PAGINA
- Local nMaxIAll := 085 //MAXIMO DE ITENS DA TERCEIRA PAGINA EM DIANTE
- Local nFimL := 855 //NUMERO DA LINHA FINAL QUANDO HOUVER MAIS PAGINAS
- Local aIndImp := {}
- Local aIndAux := {}
- Local aItens := {}
- Local aSitTrib := {}
- Local aSitSN := {}
- Local aHrEnt := {}
- Local aUF := {}
- Local aTamCol := {271,27,76,91,138} //Tamanho das colunas s緌 fixas para os Itens
- Local lConverte := .F. //GetNewPar("MV_CONVERT",.F.)
- Local lMv_ItDesc := .F. //Iif( GetNewPar("MV_ITDESC","N")=="S", .T., .F. )
- Local lMv_Logod := .F. //If(GetNewPar("MV_LOGOD", "N" ) == "S", .T., .F. )
- Local lNFCE := Substr(oNFe:_NFe:_InfNfe:_ID:Text,24,2) == "65"
- Private oDPEC := oNfeDPEC
- Private oNF := oNFe:_NFe
- Private oEmitente := oNF:_InfNfe:_Emit
- Private oIdent := oNF:_InfNfe:_IDE
- Private oDestino := IIf(Type("oNF:_InfNfe:_Dest")=="U",Nil,oNF:_InfNfe:_Dest)
- Private oTotal := oNF:_InfNfe:_Total
- Private oDet := oNF:_InfNfe:_Det
- aadd(aSitTrib,"00")
- aadd(aSitTrib,"10")
- aadd(aSitTrib,"20")
- aadd(aSitTrib,"30")
- aadd(aSitTrib,"40")
- aadd(aSitTrib,"41")
- aadd(aSitTrib,"50")
- aadd(aSitTrib,"51")
- aadd(aSitTrib,"60")
- aadd(aSitTrib,"70")
- aadd(aSitTrib,"90")
- aadd(aSitSN,"101")
- aadd(aSitSN,"102")
- aadd(aSitSN,"201")
- aadd(aSitSN,"202")
- aadd(aSitSN,"500")
- aadd(aSitSN,"900")
- //Preenchimento do Array de UF
- aadd(aUF,{"RO","11"})
- aadd(aUF,{"AC","12"})
- aadd(aUF,{"AM","13"})
- aadd(aUF,{"RR","14"})
- aadd(aUF,{"PA","15"})
- aadd(aUF,{"AP","16"})
- aadd(aUF,{"TO","17"})
- aadd(aUF,{"MA","21"})
- aadd(aUF,{"PI","22"})
- aadd(aUF,{"CE","23"})
- aadd(aUF,{"RN","24"})
- aadd(aUF,{"PB","25"})
- aadd(aUF,{"PE","26"})
- aadd(aUF,{"AL","27"})
- aadd(aUF,{"MG","31"})
- aadd(aUF,{"ES","32"})
- aadd(aUF,{"RJ","33"})
- aadd(aUF,{"SP","35"})
- aadd(aUF,{"PR","41"})
- aadd(aUF,{"SC","42"})
- aadd(aUF,{"RS","43"})
- aadd(aUF,{"MS","50"})
- aadd(aUF,{"MT","51"})
- aadd(aUF,{"GO","52"})
- aadd(aUF,{"DF","53"})
- aadd(aUF,{"SE","28"})
- aadd(aUF,{"BA","29"})
- aadd(aUF,{"EX","99"})
- /*
- Itens para impressao
- */
- oDet := IIf(ValType(oDet)=="O",{oDet},oDet)
- nLenDet := Len(oDet)
- If lMv_ItDesc
- For nX := 1 To nLenDet
- Aadd(aIndAux, {nX, SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),1,MAXITEMC)})
- Next
- aIndAux := aSort(aIndAux,,, { |x, y| x[2] < y[2] })
- For nX := 1 To nLenDet
- Aadd(aIndImp, aIndAux[nX][1] )
- Next
- EndIf
- For nZ := 1 To nLenDet
- If lMv_ItDesc
- nX := aIndImp[nZ]
- Else
- nX := nZ
- EndIf
- nPrivate := nX
- nVTotal := Val(oDet[nX]:_Prod:_vProd:TEXT)//-Val(IIF(Type("oDet[nPrivate]:_Prod:_vDesc")=="U","",oDet[nX]:_Prod:_vDesc:TEXT))
- nVUnit := Val(oDet[nX]:_Prod:_vUnCom:TEXT)
- nQtd := Val(oDet[nX]:_Prod:_qCom:TEXT)
- // Tratamento para quebrar os digitos dos valores
- aAux := {}
- AADD(aAux, AllTrim(TransForm(nQtd,TM(nQtd,TamSX3("D2_QUANT")[1],TamSX3("D2_QUANT")[2]))))
- AADD(aAux, AllTrim(TransForm(nVUnit,TM(nVUnit,TamSX3("D2_PRCVEN")[1],TamSX3("D2_PRCVEN")[2]))))
- AADD(aAux, AllTrim(TransForm(nVTotal,TM(nVTotal,TamSX3("D2_TOTAL")[1],TamSX3("D2_TOTAL")[2]))))
- aadd(aItens,{;
- SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),1,nMaxDes),;
- oDet[nX]:_Prod:_uCom:TEXT,;
- SubStr(aAux[1], 1, Len(aAux[1])),;
- SubStr(aAux[2], 1, Len(aAux[2])),;
- SubStr(aAux[3], 1, Len(aAux[3])),;
- })
- cAux := AllTrim(SubStr(NoChar(oDet[nX]:_Prod:_xProd:TEXT,lConverte),(nMaxDes+1)))
- aAux[1] := SubStr(aAux[1], Len(aAux[1]) + 1)
- aAux[2] := SubStr(aAux[2], Len(aAux[2]) + 1)
- aAux[3] := SubStr(aAux[3], Len(aAux[3]) + 1)
- lPontilhado := .F.
- While !Empty(cAux) .Or. !Empty(aAux[1]) .Or. !Empty(aAux[2]) .Or. !Empty(aAux[3])
- aadd(aItens,{;
- SubStr(cAux,1,nMaxDes),;
- "",;
- SubStr(aAux[1], 1, Len(aAux[1])),;
- SubStr(aAux[2], 1, Len(aAux[2])),;
- SubStr(aAux[3], 1, Len(aAux[3])),;
- })
- // Popula as informa踥es para as pr闛imas linhas adicionais
- cAux := SubStr(cAux,(nMaxDes+1))
- aAux[1] := SubStr(aAux[1], Len(aAux[1]) + 1)
- aAux[2] := SubStr(aAux[2], Len(aAux[2]) + 1)
- aAux[3] := SubStr(aAux[3], Len(aAux[3]) + 1)
- lPontilhado := .T.
- EndDo
- If lPontilhado
- aadd(aItens,{;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-",;
- "-";
- })
- EndIf
- Next nZ
- /*
- Calculo do numero de folhas - DANFE Simplificado
- */
- nLenItens := Len(aItens) - nMaxI // Todos os produtos/servi蔞s excluindo a primeira p墔ina
- nFolhas := 1 // Folhas utilizadas at� o momento
- lFlag := .T.
- While lFlag
- If nLenItens > 0
- nFolhas++
- // Se estiver habilitado frente e verso e for a segunda folha
- If MV_PAR05 == 1 .And. nFolhas == 2
- nLenItens -= nMaxI2
- Else
- nLenItens -= nMaxIAll
- EndIf
- if ( nLenItens > -10 .And. nLenItens < 0 ) .And. nFolhas > 1 // Coloca mais uma folha para impressao do rodape
- nFolhas++
- endif
- Else
- if ( nLenItens > -10 .And. nLenItens < 0 ) .And. nFolhas == 1 // Coloca mais uma folha para impressao do rodape
- nFolhas++
- endif
- lFlag := .F.
- EndIf
- EndDo
- //Inicializacao da pagina do objeto grafico
- oDanfe:StartPage()
- //Definicao do Box - Recibo de entrega
- oDanfe:Box(000,000,010,501)
- oDanfe:Say(006, 002, "RECEBEMOS DE "+NoChar(oEmitente:_xNome:Text,lConverte)+" OS PRODUTOS CONSTANTES DA NOTA FISCAL INDICADA AO LADO", oFont07:oFont)
- oDanfe:Box(009,000,037,101)
- oDanfe:Say(017, 002, "DATA DE RECEBIMENTO", oFont07N:oFont)
- oDanfe:Box(009,100,037,500)
- oDanfe:Say(017, 102, "IDENTIFICAデO E ASSINATURA DO RECEBEDOR", oFont07N:oFont)
- oDanfe:Box(000,500,037,603)
- oDanfe:Say(007, 542, iif(lNFCE,"NFC-e","NF-e"), oFont08N:oFont)
- oDanfe:Say(017, 510, "N. "+StrZero(Val(oIdent:_NNf:Text),9), oFont08:oFont)
- oDanfe:Say(027, 510, "S仂IE "+SubStr(oIdent:_Serie:Text,1,3), oFont08:oFont)
- //Quadro 1 IDENTIFICACAO DO EMITENTE
- oDanfe:Box(042,000,147,250)
- oDanfe:Say(052,096, "Identifica誽o do emitente",oFont12N:oFont)
- nLinCalc := 065
- cStrAux := AllTrim(NoChar(oEmitente:_xNome:Text,lConverte))
- nForTo := Len(cStrAux)/24
- nForTo := Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1,Round(nForTo,0))
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,096,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*24)+1),24), oFont12N:oFont )
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(NoChar(oEmitente:_EnderEmit:_xLgr:Text,lConverte))+", "+AllTrim(oEmitente:_EnderEmit:_Nro:Text)
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- If Type("oEmitente:_EnderEmit:_xCpl") <> "U"
- cStrAux := "Complemento: "+AllTrim(NoChar(oEmitente:_EnderEmit:_xCpl:TEXT,lConverte))
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- cStrAux := AllTrim(oEmitente:_EnderEmit:_xBairro:Text)
- If Type("oEmitente:_EnderEmit:_Cep")<>"U"
- cStrAux += " Cep:"+TransForm(oEmitente:_EnderEmit:_Cep:Text,"@r 99999-999")
- EndIf
- nForTo := Len(cStrAux)/40
- nForTo += Iif(nForTo>Round(nForTo,0),Round(nForTo,0)+1-nForTo,nForTo)
- For nX := 1 To nForTo
- oDanfe:Say(nLinCalc,098,SubStr(cStrAux,Iif(nX==1,1,((nX-1)*40)+1),40),oFont08N:oFont)
- nLinCalc+=10
- Next nX
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(Type("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- Else
- oDanfe:Say(nLinCalc,098, NoChar(oEmitente:_EnderEmit:_xBairro:Text,lConverte)+" Cep:"+TransForm(IIF(Type("oEmitente:_EnderEmit:_Cep")=="U","",oEmitente:_EnderEmit:_Cep:Text),"@r 99999-999"),oFont08N:oFont)
- nLinCalc+=10
- oDanfe:Say(nLinCalc,098, oEmitente:_EnderEmit:_xMun:Text+"/"+oEmitente:_EnderEmit:_UF:Text,oFont08N:oFont)
- nLinCalc+=9
- oDanfe:Say(nLinCalc,098, "Fone: "+IIf(Type("oEmitente:_EnderEmit:_Fone")=="U","",oEmitente:_EnderEmit:_Fone:Text),oFont08N:oFont)
- EndIf
- //Logotipo
- If lMv_Logod
- cLogoD := GetSrvProfString("Startpath","") + "DANFE" + cEmpAnt + cFilAnt + ".BMP"
- If !File(cLogoD)
- cLogoD := GetSrvProfString("Startpath","") + "DANFE" + cEmpAnt + ".BMP"
- If !File(cLogoD)
- lMv_Logod := .F.
- EndIf
- EndIf
- EndIf
- If nfolha==1
- If lMv_Logod
- oDanfe:SayBitmap(045,003,cLogoD,090,090)
- Else
- oDanfe:SayBitmap(045,003,cLogo,090,090)
- EndIF
- Endif
- //Codigo de barra
- oDanfe:Box(042,350,093,603)
- oDanfe:Box(085,350,115,603)
- oDanfe:Say(107,355,TransForm(SubStr(oNF:_InfNfe:_ID:Text,4),"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999"),oFont12N:oFont)
- oDanfe:Box(115,350,147,603)
- If !Empty(cCodAutDPEC) .And. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"4"
- cDataEmi := Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",Substr(oNFe:_NFE:_INFNFE:_IDE:_DHEMI:Text,9,2),Substr(oNFe:_NFE:_INFNFE:_IDE:_DEMI:Text,9,2))
- cTPEmis := "4"
- If Type("oDPEC:_ENVDPEC:_INFDPEC:_RESNFE") <> "U"
- cUF := aUF[aScan(aUF,{|x| x[1] == oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_UF:Text})][02]
- cValIcm := StrZero(Val(StrTran(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VNF:TEXT,".","")),14)
- cICMSp := iif(Val(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VICMS:TEXT)>0,"1","2")
- cICMSs := iif(Val(oDPEC:_ENVDPEC:_INFDPEC:_RESNFE:_VST:TEXT)>0,"1","2")
-
- ElseIf type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST") <> "U" //EPEC NFE
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_UF:TEXT") <> "U"
- cUF := aUF[aScan(aUF,{|x| x[1] == oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_UF:TEXT})][02]
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VNF:TEXT") <> "U"
- cValIcm := StrZero(Val(StrTran(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VNF:TEXT,".","")),14)
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VICMS:TEXT") <> "U"
- cICMSp := IIf(Val(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VICMS:TEXT) > 0,"1","2")
- EndIf
- If Type ("oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VST:TEXT") <> "U"
- cICMSs := IIf(Val(oDPEC:_EVENTO:_INFEVENTO:_DETEVENTO:_DEST:_VST:TEXT )> 0,"1","2")
- EndIf
- EndIf
- ElseIF (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25"
- cUF := aUF[aScan(aUF,{|x| x[1] == oNFe:_NFE:_INFNFE:_DEST:_ENDERDEST:_UF:Text})][02]
- cDataEmi := Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",Substr(oNFe:_NFE:_INFNFE:_IDE:_DHEMI:Text,9,2),Substr(oNFe:_NFE:_INFNFE:_IDE:_DEMI:Text,9,2))
- cTPEmis := oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT
- cValIcm := StrZero(Val(StrTran(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VNF:TEXT,".","")),14)
- cICMSp := Iif(Val(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VICMS:TEXT)>0,"1","2")
- cICMSs := Iif(Val(oNFe:_NFE:_INFNFE:_TOTAL:_ICMSTOT:_VST:TEXT)>0,"1","2")
- EndIf
- If !Empty(cUF) .And. !Empty(cDataEmi) .And. !Empty(cTPEmis) .And. !Empty(cValIcm) .And. !Empty(cICMSp) .And. !Empty(cICMSs)
- If Type("oNF:_InfNfe:_DEST:_CNPJ:Text")<>"U"
- cCNPJCPF := oNF:_InfNfe:_DEST:_CNPJ:Text
- If cUf == "99"
- cCNPJCPF := STRZERO(val(cCNPJCPF),14)
- EndIf
- ElseIf Type("oNF:_INFNFE:_DEST:_CPF:Text")<>"U"
- cCNPJCPF := oNF:_INFNFE:_DEST:_CPF:Text
- cCNPJCPF := STRZERO(val(cCNPJCPF),14)
- Else
- cCNPJCPF := ""
- EndIf
- cChaveCont += cUF+cTPEmis+cCNPJCPF+cValIcm+cICMSp+cICMSs+cDataEmi
- cChaveCont := cChaveCont+Modulo11(cChaveCont)
- EndIf
- oDanfe:Say(127,355,"Consulta de autenticidade no portal nacional da "+iif(lNFCE,"NFC-e","NF-e"),oFont12:oFont)
- oDanfe:Say(137,355,"www.nfe.fazenda.gov.br/portal ou no site da SEFAZ Autorizada",oFont12:oFont)
- //Quadro 2
- oDanfe:Box(042,248,147,351)
- oDanfe:Say(055,275, "DANFE",OFONT12N:oFont)
- oDanfe:Say(065,258, "SIMPLIFICADO",OFONT12N:oFont)
- oDanfe:Say(075,258, "DOCUMENTO AUXILIAR DA",oFont07:oFont)
- if lNFCE
- oDanfe:Say(085,258, "NOTA FISCAL DE CONSUMIDOR",oFont07:oFont)
- else
- oDanfe:Say(085,258, "NOTA FISCAL ELETR偡ICA",oFont07:oFont)
- endif
- oDanfe:Say(095,266, "0-ENTRADA",oFont08:oFont)
- oDanfe:Say(105,266, "1-SA沝A" ,oFont08:oFont)
- oDanfe:Box(088,315,105,325)
- oDanfe:Say(099,318, oIdent:_TpNf:Text,oFont08N:oFont)
- oDanfe:Say(120,258,"N. "+StrZero(Val(oIdent:_NNf:Text),9),oFont10N:oFont)
- oDanfe:Say(130,258,"S仂IE "+SubStr(oIdent:_Serie:Text,1,3),oFont10N:oFont)
- oDanfe:Say(140,258,"FOLHA "+StrZero(nFolha,2)+"/"+StrZero(nFolhas,2),oFont10N:oFont)
- //Quadro 4
- oDanfe:Box(149,000,172,603)
- oDanfe:Box(149,351,172,603)
- oDanfe:Say(158,002,"NATUREZA DA OPERAデO",oFont08N:oFont)
- oDanfe:Say(168,002,oIdent:_NATOP:TEXT,oFont08:oFont)
- oDanfe:Say(158,353,"PROTOCOLO DE AUTORIZAデO DE USO",oFont08N:oFont)
- If nFolha == 1
- If ((oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"25")
- oDanfe:Say(097,355,"DADOS DA "+iif(lNFCE,"NFC-E","NF-E"),oFont12N:oFont)
- Else
- oDanfe:Say(097,355,"CHAVE DE ACESSO DA "+iif(lNFCE,"NFC-E","NF-E"),oFont12N:oFont)
- EndIf
- nFontSize := 28
- oDanfe:Code128C(077,370,SubStr(oNF:_InfNfe:_ID:Text,4), nFontSize )
- EndIf
- cDadosProt := IIF(!Empty(cCodAutDPEC),cCodAutDPEC+" "+AllTrim(IIF(!Empty(dDtReceb),ConvDate(DTOS(dDtReceb)),ConvDate(oNF:_InfNfe:_IDE:_DHEMI:Text)))+" "+AllTrim(cDtHrRecCab),IIF(!Empty(cCodAutSef) .And. ((Val(SubStr(oNF:_INFNFE:_IDE:_SERIE:TEXT,1,3)) >= 900).And.(oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"23") .Or. (oNFe:_NFE:_INFNFE:_IDE:_TPEMIS:TEXT)$"1|6|7",cCodAutSef+" "+AllTrim(IIF(!Empty(dDtReceb),ConvDate(DTOS(dDtReceb)),ConvDate(oNF:_InfNfe:_IDE:_DHEMI:Text)))+" "+AllTrim(cDtHrRecCab),TransForm(cChaveCont,"@r 9999 9999 9999 9999 9999 9999 9999 9999 9999")))
- oDanfe:Say(168,354,cDadosProt,oFont08:oFont)
- //Quadro 5
- oDanfe:Box(174,000,197,603)
- oDanfe:Box(174,000,197,200)
- oDanfe:Box(174,200,197,400)
- oDanfe:Box(174,400,197,603)
- oDanfe:Say(182,002,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(190,002,IIf(Type("oEmitente:_IE:TEXT")<>"U",oEmitente:_IE:TEXT,""),oFont08:oFont)
- oDanfe:Say(182,205,"INSC.ESTADUAL DO SUBST.TRIB.",oFont08N:oFont)
- oDanfe:Say(190,205,IIf(Type("oEmitente:_IEST:TEXT")<>"U",oEmitente:_IEST:TEXT,""),oFont08:oFont)
- oDanfe:Say(182,405,"CNPJ/CPF",oFont08N:oFont)
- Do Case
- Case Type("oEmitente:_CNPJ")=="O"
- cAux := TransForm(oEmitente:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oEmitente:_CPF")=="O"
- cAux := TransForm(oEmitente:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(190,405,cAux,oFont08:oFont)
- /*
- Quadro Destinat嫫io/Remetente - DANFE Simplificado
- */
- if lNFCE .AND. (oDestino == Nil .or. type("oDestino:_EnderDest") == "U") // Impressao DANFE A4 no PDV NFC-e
- oDestino := MontaNfcDest(oDestino)
- endif
- aDest := { MontaEnd(oDestino:_EnderDest),;
- NoChar(oDestino:_EnderDest:_XBairro:Text,lConverte),;
- IIF(Type("oDestino:_EnderDest:_Cep")=="U","",Transform(oDestino:_EnderDest:_Cep:Text,"@r 99999-999")),;
- IIF(Type("oIdent:_DSaiEnt")=="U","",oIdent:_DSaiEnt:Text),;
- oDestino:_EnderDest:_XMun:Text,;
- IIF(Type("oDestino:_EnderDest:_fone")=="U","",oDestino:_EnderDest:_fone:Text),;
- oDestino:_EnderDest:_UF:Text,;
- IIF(Type("oDestino:_IE:Text")=="U","",oDestino:_IE:Text),;
- "" }
- If Type("oIdent:_DSaiEnt") <> "U" .And. Type("oIdent:_HSaiEnt:Text")<> "U"
- aAdd(aHrEnt,oIdent:_HSaiEnt:Text)
- Else
- aAdd(aHrEnt,"")
- EndIf
- Do Case
- Case Type("oDestino:_CNPJ")=="O"
- cAux := TransForm(oDestino:_CNPJ:TEXT,"@r 99.999.999/9999-99")
- Case Type("oDestino:_CPF")=="O"
- cAux := TransForm(oDestino:_CPF:TEXT,"@r 999.999.999-99")
- OtherWise
- cAux := Space(14)
- EndCase
- oDanfe:Say(205,002,"DESTINATARIO/REMETENTE",oFont08N:oFont)
- oDanfe:Box(207,000,227,450)
- oDanfe:Say(215,002, "NOME/RAZ鬃 SOCIAL",oFont08N:oFont)
- oDanfe:Say(225,002,NoChar(oDestino:_XNome:TEXT,lConverte),oFont08:oFont)
- oDanfe:Box(207,280,227,500)
- oDanfe:Say(215,283,"CNPJ/CPF",oFont08N:oFont)
- oDanfe:Say(225,283,cAux,oFont08:oFont)
- oDanfe:Box(227,000,247,500)
- oDanfe:Box(227,000,247,260)
- oDanfe:Say(234,002,"ENDEREと",oFont08N:oFont)
- oDanfe:Say(244,002,aDest[01],oFont08:oFont)
- oDanfe:Box(227,230,247,380)
- oDanfe:Say(234,232,"BAIRRO/DISTRITO",oFont08N:oFont)
- oDanfe:Say(254,232,aDest[02],oFont08:oFont)
- oDanfe:Box(227,380,247,500)
- oDanfe:Say(234,382,"CEP",oFont08N:oFont)
- oDanfe:Say(244,382,aDest[03],oFont08:oFont)
- oDanfe:Box(246,000,267,500)
- oDanfe:Box(246,000,267,180)
- oDanfe:Say(255,002,"MUNICIPIO",oFont08N:oFont)
- oDanfe:Say(265,002,aDest[05],oFont08:oFont)
- oDanfe:Box(246,150,267,256)
- oDanfe:Say(255,152,"FONE/FAX",oFont08N:oFont)
- oDanfe:Say(265,152,aDest[06],oFont08:oFont)
- oDanfe:Box(246,255,267,341)
- oDanfe:Say(255,257,"UF",oFont08N:oFont)
- oDanfe:Say(265,257,aDest[07],oFont08:oFont)
- oDanfe:Box(246,340,267,500)
- oDanfe:Say(255,342,"INSCRIデO ESTADUAL",oFont08N:oFont)
- oDanfe:Say(265,342,aDest[08],oFont08:oFont)
- oDanfe:Box(207,502,227,603)
- oDanfe:Say(215,504,"DATA DE EMISS鬃",oFont08N:oFont)
- oDanfe:Say(225,504,Iif(oNF:_INFNFE:_VERSAO:TEXT >= "3.10",ConvDate(oIdent:_DHEmi:TEXT),ConvDate(oIdent:_DEmi:TEXT)),oFont08:oFont)
- oDanfe:Box(227,502,247,603)
- oDanfe:Say(234,504,"DATA ENTRADA/SA沝A",oFont08N:oFont)
- oDanfe:Say(243,504,Iif( Empty(aDest[4]),"",ConvDate(aDest[4]) ),oFont08:oFont)
- oDanfe:Box(246,502,267,603)
- oDanfe:Say(255,503,"HORA ENTRADA/SA沝A",oFont08N:oFont)
- oDanfe:Say(262,503,aHrEnt[01],oFont08:oFont)
- // Quadro Dados do Produto / Servico
- aAux := {{{},{},{},{},{}}}
- nY := 0
- nLenItens := Len(aItens)
- For nX :=1 To nLenItens
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][01])
- nY++
- aadd(Atail(aAux)[nY],NoChar(aItens[nX][02],lConverte))
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][03])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][04])
- nY++
- aadd(Atail(aAux)[nY],aItens[nX][05])
- If nY >= 5
- nY := 0
- EndIf
- Next nX
- For nX := 1 To nLenItens
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- nY++
- aadd(Atail(aAux)[nY],"")
- If nY >= 5
- nY := 0
- EndIf
- Next nX
- nLinha := 294 //Linha inicial da primeira pagina
- RiscaItem( @oDanfe, nFolha, nFolhas, aTamCol )
- For nX := 1 to Len(aAux)
- For nZ := 1 to Len(aAux[nX][1])
- ImpItem( @oDanfe, aAux[nX], nFolha, nFolhas, nZ, nLinha, aTamCol )
- nLinha := nLinha + 10
- if ( nFolha < nFolhas .And. nLinha >= nFimL )
- nFolha++
- oDanfe:EndPage()
- oDanfe:StartPage()
- RiscaItem( @oDanfe, nFolha, nFolhas, aTamCol )
- if MV_PAR05 == 1 .And. nFolha == 2
- nLinha := 052
- else
- nLinha := 006
- endif
- endif
- Next Nz
- Next nX
- //Monta quadro dos Totais
- oDanfe:Box(845, 000, 865, 374)
- oDanfe:Say(859,002 , "VALOR TOTAL DA NOTA", oFont18N:oFont)
- oDanfe:Box( 845, 374, 865, 603 )
- oDanfe:Say(859, 376, Alltrim(Transform(Val(oTotal:_ICMSTOT:_vNF:TEXT),"@e 9,999,999,999,999.99")) ,oFont18N:oFont)
- oDanfe:EndPage()
- return(.T.)
- static Function ImpItem(oDanfe, aItens, nFolha, nFolhas ,nItem ,nLinha, aTamCol)
- local nAuxH := 0
- if aAux[1][1][nItem] == "-"
- oDanfe:Say(nLinha, nAuxH, Replicate("- ", 150), oFont08:oFont)
- else
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][1][nItem], oFont08:oFont) // DESCRICAO DO PRODUTO
- nAuxH += aTamCol[1]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][2][nItem], oFont08:oFont) // UN
- nAuxH += aTamCol[2]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][3][nItem], oFont08:oFont) // QUANT
- nAuxH += aTamCol[3]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][4][nItem], oFont08:oFont) // V UNITARIO
- nAuxH += aTamCol[4]
- oDanfe:Say(nLinha, nAuxH + 2, aAux[1][5][nItem], oFont08:oFont) // V. TOTAL
- endif
- return(.T.)
- //矬闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡醴
- //蚶inalizacao da pagina do objeto grafico �
- //斂闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡闡囁
- static Function RiscaItem( oDanfe, nFolha, nFolhas, aTamCol )
- local lUltFolha := .F.
- local lFrentVers := .F.
- local lFirsFolha := nFolha == 1
- local nAuxH := 0
- //Declara onde inicia as linhas dos quadros dos itens e dos Says de cada quadro,
- //os valores padr髊s s緌 para a primeira pagina com Danfe de apenas 1 pagina.
- local nRow1 := 277 //Linha dos Box's
- local nRow2 := 284 //Linha dos Say's
- //Declara a altura dos quadros dos itens, o valor padr緌 � para a primeira
- //p墔ina com DANFE de apenas 1 pagina
- local nAlt1 := 843
- if MV_PAR05 == 1
- lFrentVers := .T.
- endif
- if nFolhas == nFolha
- lUltFolha := .T.
- endif
- if nFolha ==1
- oDanfe:Say(275,002,"DADOS DO PRODUTO / SERVIと",oFont08N:oFont)
- oDanfe:Box(277,000,678,603)
- if !lUltFolha
- nAlt1 := 865
- endif
- elseif nFolhas > 1 .And. nFolha <> 1
- if lFrentVers .And. nFolha == 2
- nRow1 := 042
- nRow2 := 052
- if !lUltFolha
- nAlt1 := 865
- endif
- //oDanfe:Box(042,000,147,250)
- else
- nRow1 := 000
- nRow2 := 010
- if !lUltFolha
- nAlt1 := 865
- endif
- //oDanfe:Box(042,000,147,250)
- endif
- else
- endif
- nAuxH := 0
- oDanfe:Box(nRow1, nAuxH, nAlt1, nAuxH + aTamCol[1])
- if lFirsFolha
- oDanfe:Say(nRow2, nAuxH + 2, "DESCRIデO DO PROD./SERV.", oFont08N:oFont)
- endif
- nAuxH += aTamCol[1]
- oDanfe:Box(nRow1, nAuxH, nAlt1, nAuxH + aTamCol[2])
- if lFirsFolha
- oDanfe:Say(nRow2, nAuxH + 2, "UN", oFont08N:oFont)
- endif
- nAuxH += aTamCol[2]
- oDanfe:Box(nRow1, nAuxH, nAlt1, nAuxH + aTamCol[3])
- if lFirsFolha
- oDanfe:Say(nRow2, nAuxH + 2, "QUANT.", oFont08N:oFont)
- endif
- nAuxH += aTamCol[3]
- oDanfe:Box(nRow1, nAuxH, nAlt1, nAuxH + aTamCol[4])
- if lFirsFolha
- oDanfe:Say(nRow2, nAuxH + 2, "V.UNITARIO", oFont08N:oFont)
- endif
- nAuxH += aTamCol[4]
- oDanfe:Box(nRow1, nAuxH, nAlt1, nAuxH + aTamCol[5])
- if lFirsFolha
- oDanfe:Say(nRow2, nAuxH + 2, "V.TOTAL", oFont08N:oFont)
- endif
- return(.T.)
- static function getXMLColab(aIdNFe,cModalidade,lUsaColab)
- local nZ := 0
- local nCount := 0
- local cIdEnt := "000000"
- local aDados := {}
- local aRetorno := {}
- If Empty(cModalidade)
- cModalidade := ColGetPar( "MV_MODALID", "1" )
- EndIf
- For nZ := 1 To len(aIdNfe)
- nCount++
- aDados := executeRetorna( aIdNfe[nZ], cIdEnt, lUsaColab)
- if ( nCount == 10 )
- delClassIntF()
- nCount := 0
- endif
- aAdd(aRetorno,aDados)
- Next nZ
- Return(aRetorno)
- static function atuSf2Hora( cDtHrRec,cSeek )
- local aArea := GetArea()
- dbSelectArea("SF2")
- dbSetOrder(1)
- If MsSeek(xFilial("SF2")+cSeek)
- If SF2->(FieldPos("F2_HORA"))<>0 .And. Empty(SF2->F2_HORA)
- RecLock("SF2")
- SF2->F2_HORA := cDtHrRec
- MsUnlock()
- EndIf
- EndIf
- dbSelectArea("SF1")
- dbSetOrder(1)
- If MsSeek(xFilial("SF1")+cSeek)
- If SF1->(FieldPos("F1_HORA"))<>0 .And. Empty(SF1->F1_HORA)
- RecLock("SF1")
- SF1->F1_HORA := cDtHrRec
- MsUnlock()
- EndIf
- EndIf
- RestArea(aArea)
- return nil
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} ColDadosNf
- Devolve os dados com a informa誽o desejada conforme par滵etro nInf.
- @author Rafel Iaquinto
- @since 30/07/2014
- @version 11.9
- @param nInf, inteiro, Codigo da informa誽o desejada:<br>1 - Normal<br>2 - Cancelametno<br>3 - Inutiliza誽o
- @return aRetorno Array com as posi踥es do XML desejado, sempre deve retornar a mesma quantidade de posi踥es.
- /*/
- //-----------------------------------------------------------------------
- static function ColDadosNf(nInf)
- local aDados := {}
- do case
- case nInf == 1
- //Informa蔞es da NF-e
- aadd(aDados,"NFEPROC|PROTNFE|INFPROT|CSTAT") //1 - Codigo Status documento
- aadd(aDados,"NFEPROC|PROTNFE|INFPROT|XMOTIVO") //2 - Motivo do status
- aadd(aDados,"NFEPROC|PROTNFE|INFPROT|NPROT") //3 - Protocolo Autporizacao
- aadd(aDados,"NFEPROC|PROTNFE|INFPROT|DHRECBTO") //4 - Data e hora de recebimento
- aadd(aDados,"NFEPROC|NFE|INFNFE|IDE|TPEMIS") //5 - Tipo de Emissao
- aadd(aDados,"NFEPROC|NFE|INFNFE|IDE|TPAMB") //6 - Ambiente de transmiss緌
- aadd(aDados,"NFE|INFNFE|IDE|TPEMIS") //7 - Tipo de Emissao - Caso nao tenha retorno
- aadd(aDados,"NFE|INFNFE|IDE|TPAMB") //8 - Ambiente de transmiss緌 - Caso nao tenha retorno
- aadd(aDados,"NFEPROC|RETDEPEC|INFDPECREG|NREGDPEC") //9 - Numero de autoriza誽o DPEC
- aadd(aDados,"NFEPROC|PROTNFE|INFPROT|CHNFE") //10 - Chave da autorizacao
- aadd(aDados,"NFEPROC|PROTNFE|INFPROT|XMSG") //11 - Tag <xMsg>
- case nInf == 2
- //Informacoes do cancelamento - evento
- aadd(aDados,"PROCEVENTONFE|RETEVENTO|INFEVENTO|CSTAT") //1 - Codigo Status documento
- aadd(aDados,"PROCEVENTONFE|RETEVENTO|INFEVENTO|XMOTIVO") //2 - Motivo do status
- aadd(aDados,"PROCEVENTONFE|RETEVENTO|INFEVENTO|NPROT") //3 - Protocolo Autporizacao
- aadd(aDados,"PROCEVENTONFE|RETEVENTO|INFEVENTO|DHREGEVENTO") //4 - Data e hora de recebimento
- aadd(aDados,"") //5 - Tipo de Emissao
- aadd(aDados,"PROCEVENTONFE|RETEVENTO|INFEVENTO|TPAMB") //6 - Ambiente de transmiss緌
- aadd(aDados,"") //7 - Tipo de Emissao - Caso nao tenha retorno
- aadd(aDados,"ENVEVENTO|EVENTO|INFEVENTO|TPAMB") //8 - Ambiente de transmiss緌 - Caso nao tenha retorno
- aadd(aDados,"") //9 - Numero de autoriza誽o DPEC
- aadd(aDados,"") //10 - Chave da autorizacao
- aadd(aDados,"") //11 - Tag <xMsg>
- case nInf == 3
- //Informa踥es da Inutiliza誽o
- aadd(aDados,"PROCINUTNFE|RETINUTNFE|INFINUT|CSTAT") //1 - Codigo Status documento
- aadd(aDados,"PROCINUTNFE|RETINUTNFE|INFINUT|XMOTIVO") //2 - Motivo do status
- aadd(aDados,"PROCINUTNFE|RETINUTNFE|INFINUT|NPROT") //3 - Protocolo Autporizacao
- aadd(aDados,"PROCINUTNFE|RETINUTNFE|INFINUT|DHRECBTO") //4 - Data e hora de recebimento
- aadd(aDados,"") //5 - Tipo de Emissao
- aadd(aDados,"PROCINUTNFE|RETINUTNFE|INFINUT|TPAMB") //6 - Ambiente de transmiss緌
- aadd(aDados,"") //7 - Tipo de Emissao - Caso nao tenha retorno
- aadd(aDados,"INUTNFE|INFINUT|TPAMB ") //8 - Ambiente de transmiss緌 - Caso nao tenha retorno
- aadd(aDados,"") //9 - Numero de autoriza誽o DPEC
- aadd(aDados,"") //10 - Chave da autorizacao
- aadd(aDados,"") //11 - Tag <xMsg>
- end
- return(aDados)
- static function UsaColaboracao(cModelo)
- Local lUsa := .F.
- If FindFunction("ColUsaColab")
- lUsa := ColUsaColab(cModelo)
- endif
- return (lUsa)
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} IMPDNFLJ
- Chama a fun誽o do Loja para impress緌 da Danfe Simplificado na Impressora N緌-Fiscal
- @author eduardo.sales
- @since 09/01/2018
- @version 12
- @return Nil
- /*/
- //-----------------------------------------------------------------------
- User Function IMPDNFLJ(oNFE, cCodAutSef, dDtReceb, cDtHrRecCab)
- local cProg := iif(existBlock("LJDNFNFE"),"U_LJDNFNFE","LJDNFNFE")
- &cProg.(oNFE, cCodAutSef, dDtReceb, cDtHrRecCab)
- Return Nil
- /*/{Protheus.doc} ValAtrib
- Fun誽o utilizada para substituir o type onde n緌 seja possiv幨 a sua retirada para n緌 haver
- ocorrencia indevida pelo SonarQube.
- @author valter Silva
- @since 09/01/2018
- @version 12
- @return Nil
- /*/
- //-----------------------------------------------------------------------
- static Function ValAtrib(atributo)
- Return (type(atributo) )
- //-----------------------------------------------------------------------
- /*/{Protheus.doc} MontaNfcDest
- Faz cria誽o tag <dest> quando n緌 vem no XML da NFCe
- @author anderson.machado
- @since 29/04/2020
- @version 12
- @return Nil
- /*/
- //-----------------------------------------------------------------------
- Static Function MontaNfcDest(oDestino)
- Local oDestRet := NIL
- Local cAux := ""
- cAux := '<?xml version="1.0" encoding="UTF-8"?>'
- cAux += '<dest>'
- if type("oDestino:_xNome") == "U"
- cAux += '<xNome>CONSUMIDOR NAO IDENTIFICADO</xNome>'
- endif
- cAux += '<enderDest>'
- cAux += '<xLgr> </xLgr>'
- cAux += '<nro> </nro>'
- cAux += '<xBairro> </xBairro>'
- cAux += '<cMun> </cMun>'
- cAux += '<Cep> </Cep>'
- cAux += '<xMun> </xMun>'
- cAux += '<UF> </UF>'
- cAux += '<cPais>105</cPais>'
- cAux += '<xPais>BRASIL</xPais>'
- cAux += '</enderDest>'
- cAux += '</dest>'
- oDestRet := XmlParser(cAux,"_","","")
- oDestRet := oDestRet:_dest
- Return oDestRet
|