2 W                  #          # % % % %   % %  %         8    = = = =  L     !   8       ! ! !    8                    # %    8    % !      ! "#$ %&  ' ( ) * +, p  -  . /0 1 2 3 4 567m89 :S ;< = >?@ ABC        D EFGH I J =KLM =NO PQRSTUVW     XYZ ![\] ^ _` a _b cde InnerClasses ReturnedValuePreparedMovement entityManager!Ljavax/persistence/EntityManager;RuntimeVisibleAnnotationsLorg/jboss/seam/annotations/In;createpreparedMovementsLjava/util/List; SignatureKLjava/util/List;movementsToBeRemoved0Ljava/util/List; unitAmcList.Ljava/util/List; errorMessageLjava/lang/String; errorBatchLorg/msh/tb/entities/Batch;()VCodeLineNumberTableLocalVariableTablethis(Lorg/msh/tb/medicines/movs/MovementHome;initMovementRecordingprepareNewMovement(Ljava/util/Date;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;Lorg/msh/tb/entities/enums/MovementType;Ljava/util/Map;Ljava/lang/String;)Lorg/msh/tb/entities/Movement;pm9Lorg/msh/tb/medicines/movs/MovementHome$PreparedMovement;e-Lorg/msh/tb/medicines/movs/MovementException;dateLjava/util/Date;unitLorg/msh/tb/entities/Tbunit;sourceLorg/msh/tb/entities/Source;medicineLorg/msh/tb/entities/Medicine;type(Lorg/msh/tb/entities/enums/MovementType;batchesLjava/util/Map;commentLocalVariableTypeTable?Ljava/util/Map; StackMapTable(Ljava/util/Date;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;Lorg/msh/tb/entities/enums/MovementType;Ljava/util/Map;Ljava/lang/String;)Lorg/msh/tb/entities/Movement;prepareMovementsToRemove!(Lorg/msh/tb/entities/Movement;)VauxLorg/msh/tb/entities/Movement; canRemoveZmedIdLjava/lang/Integer;sourceIdunitIdmovdfsavePreparedMovementsbatchqtdIbm#Lorg/msh/tb/entities/BatchMovement; lastBatchMovbatchAvailableQtdbatchprevMovavailableQuantitytotalPriceInventoryF*Lorg/jboss/seam/annotations/Transactional;value7Lorg/jboss/seam/annotations/TransactionPropagationType;REQUIREDgetLastMovementAt(Ljava/util/Date;Lorg/msh/tb/entities/Medicine;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;)Lorg/msh/tb/entities/Movement;hqllstggetLastBatchMovement(Ljava/util/Date;Lorg/msh/tb/entities/Batch;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;)Lorg/msh/tb/entities/BatchMovement;5Ljava/util/List;createPreparedMovement(Ljava/util/Date;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;Lorg/msh/tb/entities/enums/MovementType;Ljava/util/Map;Ljava/lang/String;)Lorg/msh/tb/medicines/movs/MovementHome$PreparedMovement;sqtdauxbdtnewqtdval6Lorg/msh/tb/medicines/movs/MovementHome$ReturnedValue;remqtdoper totalPriceqtdhijk(Ljava/util/Date;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;Lorg/msh/tb/entities/enums/MovementType;Ljava/util/Map;Ljava/lang/String;)Lorg/msh/tb/medicines/movs/MovementHome$PreparedMovement;testBathQuantityReducingg(Lorg/msh/tb/entities/Batch;ILjava/util/Date;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Tbunit;)Vquantity minQuantitycalcBatchMinQuantityx(Lorg/msh/tb/entities/Batch;Ljava/util/Date;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Tbunit;)Ljava/lang/Integer;sqlcalcQuantityToBeReturned(Ljava/util/Date;Lorg/msh/tb/entities/Medicine;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Batch;)Lorg/msh/tb/medicines/movs/MovementHome$ReturnedValue;meddtremcheckAMCUpdate updateAMC updateUnitAMC(Lorg/msh/tb/entities/Tbunit;)VmonthLjava/lang/Long;sourceid medicineidvals[Ljava/lang/Object;months numMonthsamcsp#Lorg/msh/tb/entities/StockPosition;posList-Lorg/msh/tb/medicines/movs/StockPositionList;splist7Ljava/util/Map;5Ljava/util/List;%Ljava/util/List<[Ljava/lang/Object;>;$+removeMovement addMovementupdateAvailableQuantity"(Lorg/msh/tb/entities/Movement;Z)V batchQuantityincreasesignalupdateMedicineQuantityk(Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;IFLjava/util/Date;)VpricemovDatecountLjava/lang/Number; existStockPosCupdateBatchQuantityW(Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Batch;I)Vbq#Lorg/msh/tb/entities/BatchQuantity; recordExistsprepareNewAdjustment(Ljava/util/Date;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;Ljava/util/Map;Lorg/msh/tb/entities/FieldValueComponent;)Lorg/msh/tb/entities/Movement; adjustReason)Lorg/msh/tb/entities/FieldValueComponent;m(Ljava/util/Date;Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;Lorg/msh/tb/entities/Medicine;Ljava/util/Map;Lorg/msh/tb/entities/FieldValueComponent;)Lorg/msh/tb/entities/Movement;getErrorMessage()Ljava/lang/String; getErrorBatch()Lorg/msh/tb/entities/Batch; SourceFileMovementHome.java!Lorg/jboss/seam/annotations/Name; movementHome GH lm+org/msh/tb/medicines/movs/MovementException n o pqi rs tuh vwg xyf z{ |}7org/msh/tb/medicines/movs/MovementHome$PreparedMovement ~GMovements must be prepared to be removed before preparing new movements java/util/ArrayList org/msh/tb/entities/Movement ~ g k org/msh/tb/entities/Batch java/lang/Integer !org/msh/tb/entities/BatchMovement     DE      >?   java/util/Date   hjava/lang/StringBuilderfrom Movement m where m.date = (select max(m2.date) from Movement m2 where m2.tbunit.id=m.tbunit.id and m2.source.id=m.source.id and m2.medicine.id=m.medicine.id and m2.date <= :dt) and m.source.id=   and m.tbunit.id= and m.medicine.id= order by m.recordDate desc       from BatchMovement bm join fetch bm.movement m where m.date = (select max(m2.date) from BatchMovement bm2 join bm2.movement m2 where m2.tbunit.id=m.tbunit.id and m2.source.id=m.source.id and bm2.batch.id=bm.batch.id and m2.date <= :dt) and m.source.id= and bm.batch.id= {@Error creating movement. Unit not in medicine management control   meds.movs.datebeforejava/lang/Stringjava/lang/Object *No batches were specified for movement of  j*Batch doesn't belong to medicine: batch =  and medicine = 4No movement to be executed because the quantity is 0 cd \]   j        `a MovementException.NEGATIVE_STOCK  vselect min(bm.availableQuantity) from BatchMovement bm inner join Movement m on m.id=bm.movement_id where m.unit_id =  and m.source_id =  and bm.batch_id = " and (m.mov_date > :dt or bm.id = )  }4org/msh/tb/medicines/movs/MovementHome$ReturnedValue     org/msh/tb/entities/Tbunit ijstockPositionList +org/msh/tb/medicines/movs/StockPositionList select month(m.date), m.source.id, m.medicine.id, sum(m.quantity) from Movement m where m.date >= :dt and m.tbunit.id=:unit and m.type = :type group by month(m.date), m.source.id, m.medicine.id    !org/msh/tb/entities/StockPositionjava/util/HashMapjava/lang/Long       update Movement set availableQuantity = availableQuantity + :qtd, totalPriceInventory = totalPriceInventory + :price where tbunit.id = :unitid and source.id = :sourceid and medicine.id = :medid and (date > :dt or (date = :dt and recordDate > :recordDate))unitidmedid recordDate    update BatchMovement set availableQuantity = availableQuantity + :qtd where movement.id in (select id from Movement where tbunit.id = :unitid and source.id = :sourceid and medicine.id = :medid and date > :dt or (date = :dt and recordDate > :recordDate)) and batch.id = :batchid batchid pselect count(id) from StockPosition where tbunit.id = :unitid and source.id = :sourceid and medicine.id = :medidjava/lang/Number   #INSERT StockPosition: unit=()   med=( qtd=  date mov =  update StockPosition set quantity = quantity + :qtd, totalPrice = totalPrice + :price, lastMovement = :movdate where tbunit.id=:unitid and source.id=:sourceid and medicine.id=:medidmovdate #UPDATE StockPosition: unit=( qtd += oselect count(id) from BatchQuantity where batch.id = :batchid and tbunit.id = :unitid and source.id = :sourceid!org/msh/tb/entities/BatchQuantityupdate BatchQuantity set quantity = quantity + :qtd where batch.id = :batchid and tbunit.id = :unitid and source.id = :sourceid- #UPDATE BatchQuantity: batch=( -  , qtd += vdelete from BatchQuantity where quantity = 0 and batch.id = :batchid and tbunit.id = :unitid and source.id = :sourceid     &org/msh/tb/medicines/movs/MovementHome(org/msh/tb/medicines/movs/MovementHome$1java/util/Iteratorjava/util/Listorg/msh/tb/entities/Sourceorg/msh/tb/entities/Medicine&org/msh/tb/entities/enums/MovementType java/util/Map getMovement ()Lorg/msh/tb/entities/Movement; getMessagegetBatch getMedicine ()Lorg/msh/tb/entities/Medicine;getId()Ljava/lang/Integer; getSource()Lorg/msh/tb/entities/Source; getTbunit()Lorg/msh/tb/entities/Tbunit;iterator()Ljava/util/Iterator;hasNext()Znext()Ljava/lang/Object;equals(Ljava/lang/Object;)Z(Ljava/lang/String;)Vadd getBatches()Ljava/util/Map;keySet()Ljava/util/Set; java/util/Setget&(Ljava/lang/Object;)Ljava/lang/Object;intValue()IsetBatch(Lorg/msh/tb/entities/Batch;)V setQuantity(I)V setMovementgetDate()Ljava/util/Date;getAvailableQuantity getQuantitygetOpersetAvailableQuantity()Ljava/util/List;getTotalPriceInventory()F getTotalPricesetTotalPriceInventory(F)V setRecordDate(Ljava/util/Date;)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;toStringjavax/persistence/EntityManager createQuery-(Ljava/lang/String;)Ljavax/persistence/Query;javax/persistence/Query setParameter?(Ljava/lang/String;Ljava/lang/Object;)Ljavax/persistence/Query; getResultListsize(I)Ljava/lang/Object;isMedicineManagementStartedgetMedManStartDatebefore(Ljava/util/Date;)Z%org/jboss/seam/international/Messagesinstancejava/text/MessageFormatformat9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;org/msh/utils/date/DateUtils getDatePart"(Ljava/util/Date;)Ljava/util/Date;getBatchNumber getUnitPriceU(Lorg/msh/tb/medicines/movs/MovementHome;Lorg/msh/tb/medicines/movs/MovementHome$1;)VsetDate setTbunit setSource(Lorg/msh/tb/entities/Source;)V setMedicine!(Lorg/msh/tb/entities/Medicine;)VsetType+(Lorg/msh/tb/entities/enums/MovementType;)V setCommentsetOper setTotalPrice setBatches(Ljava/util/Map;)V&org/msh/utils/date/LocaleDateConvertergetDisplayDate%(Ljava/util/Date;Z)Ljava/lang/String;0(Lorg/msh/tb/entities/Batch;Ljava/lang/String;)VvalueOf(I)Ljava/lang/Integer;createNativeQuerygetSingleResult<(Lorg/msh/tb/medicines/movs/MovementHome;ILjava/util/Date;)VaftergetType*()Lorg/msh/tb/entities/enums/MovementType; DISPENSINGcontainsorg/jboss/seam/Component getInstance'(Ljava/lang/String;Z)Ljava/lang/Object;generateJ(Lorg/msh/tb/entities/Tbunit;Lorg/msh/tb/entities/Source;)Ljava/util/List; incMonths#(Ljava/util/Date;I)Ljava/util/Date;yearOf(Ljava/util/Date;)ImonthOfnewDate(III)Ljava/util/Date;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;java/lang/Mathround(F)IsetAmc(Ljava/lang/Integer;)Vpersist(Ljava/lang/Object;)Vremoveflush getRecordDatejava/lang/Float(F)Ljava/lang/Float; executeUpdatesetLastMovementjava/lang/SystemoutLjava/io/PrintStream;getName)()Lorg/msh/tb/entities/LocalizedNameComp;%org/msh/tb/entities/LocalizedNameComp(C)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;java/io/PrintStreamprintlngetManufacturer ADJUSTMENT'org/msh/tb/entities/FieldValueComponent getComplementgetValue"()Lorg/msh/tb/entities/FieldValue;setAdjustmentType#(Lorg/msh/tb/entities/FieldValue;)V!W Z/* = **,- .   -*+,-::** CEGH"I+Jf  --  -  ----- -W *=+ N+ :+:*:M:: -( = Y**Y*+WNY[ \]^#`DaKb\cldzf|gikloprsRK4D;  !"#v$##m%#&0.'()))*P '(++ * **2*L++M*,*,**6*L+#+M,N, :!:,"#$6%Y&:'(-)*-*-- +: ,6  --.h`6  /-0Wt*-*- -- 1: 26 3 8-4-.h`6-5-.jb8-6-7-8Y9:*-;*<*'}~38=@ELin  #3CQ`flw|z 3 &c,-Z./20/"1- v2n&#Y33I4-C956il**'7(*f '*7(*899@&'*7("(@@=' :;e<=>?h=Y>?@AB@-AC@, AD@E:*FGH+IJ:KL& &6DIPZ\Hhh  hh  h62@PA PA \BCDEh=Y>M@AB@-AN@,OAD@E:*FGH+IJ:KL%& &6DIPZ\Hhh  h2h  h62@PA PAF \BCGHz,P YQ+,RS.TU"V:WY,RSX:Y Y"Y=Y>Z@[@E+\L]6 8 6  :  w !:  ^  /Y=Y>_@ `@a@[@E "#$6   `6   b jb8  Yc :   !:  "#$h6 *+-, d:e6  +fg$+: f:*  `-,hLf+S#* f-,h*  `+-,h *  `f-,h*  +-,h8Y*i: Yj:  +k ,l -m n o p q  r  s  t u**Y* W 7  +=GVuz #$%&()",F-Z.g/n2x46789:=>?BCGJLMNO!P(Q/R6S=TDUKWRXYZ`[k\w]+IJ- eK L ZM- gNOnP-F2 zz  z  zzzzzQ-R6 S- t k&  z5 'TUVWXYB*T8( *G'TUVWXYB*8Z T+ 'TUVWXYB*o7([\] M*+-v: $`/Y+Tw"VWY+`SY-xSXykloq rLtHMM2M^-M  MM  <_# )+`a6=Y>z@A{@-A|@+OAE:*,+-+:}=Y>@~@A@E:*FH,I#:2 &1<AFiw|R2    1Xb<M./_# FB9cd *Y*8Y96:*::  *+ ,x -l _ 0:  I %:  - - .th`6 *  *:]Y*F?MYepf 7./ ?& L e  2S-f %T*R(*E9g<+**Y*+*+W  -;<<& h.**L++M*,%*-%  .  *ijHrM,+N::::*FG+IIHIJ:-::Y: :  m :  2#:  2#:  <  , 2#: 2: }W Y6 8   :  . #:   "#$6  lb8  }*F  #3ANW\c7HSV c n q  k#SlRm# In# [op H S-7k# q ^r- [s6 turr   hvwax]@XL cA qy axzcA{Zk'U|CBTC*'}Y*p*4'U|CBTC~D*+*F++0M,,%N*F-*F-7:C - ./DD& *D*+*F++0M,,%N*F-*F&()-*7+:-C. - ./DD& *7O+.h>+4h6*FG+I+ I+ IH+*I+I}I+5jIW*++ + +5j+*+0:%:-h6*FG+I+ IOI+ IH+*I+I}IW*++ br:<>%B3CADOEZFfGqHIJKJNOQUVWXYZ*[2\8]K^N_H-./OO&O!@-8^-@* *FG+I,I- I:6Y:  + , -   *F *FĻ=Y>Ŷ@+Aƶ@+Ƕȶ@ ʶ@- Aƶ@-[@ ˶@ Ͷ@AEΧ*FϹG}III+I,I- IWĻ=Y>Ѷ@+Aƶ@+Ƕȶ@ ʶ@- Aƶ@-[@ Ҷ@ Ͷ@AEα"mop$q,r6tEwJySzY{_|e}l~sz&1<DJZzf Stu   e^-6 6{El!B@4/*FӹG-OI,I+I:63Y:+,-*F*FڹG}I-OI,I+IW-^:Ļ=Y>۶@-OAƶ@-`@ܶ@-ݶ@޶@̶E*F߹G-OI,I+IWz$,6EJSY_elwz  (.\ S$pe//  //2/^-6E!B@6'*+,-: $R''  '  '''' '$(/*# /* +  ;s